Keresés

Részletes keresés

mekkGyver Creative Commons License 2016.07.28 0 0 2021

Létezik direkt ipari alkalmazásra fejlesztett arduino alapú PLC-szerű modulos rendszer. Szerintem házilag sem lehet sokkal olcsóbban kihozni.

Sokféle rs485 transceiver ic létezik (maxim,sipex...).

 

Amúgy mi Beckhoff rendszert használunk ilyesmire ip alapon, és nagyon stabil.

Előzmény: Törölt nick (2020)
Törölt nick Creative Commons License 2016.07.27 0 0 2020

Szervusz!

1/ Az Arduino használható-e ipari környezetben? Ha igen, milyen védelemmel kell ellátni?

    A környezetben erős az elektroszmog.

 

2/ Egy tucat kontaktus állapotát kell figyelni egy Arduinoval és ezeket egy másik Arduino kimenetein kell     megjeleníteni. A távolság 600 m. Használható-e az RS 485 kommunikáció?

Előzmény: Vargham (1995)
BuNnY Creative Commons License 2016.07.25 0 0 2019

Serialon értelmetlen karakter 99%-ban sebesség gond, ott van a kutya elásva. Állítgasd.

Pl. az ESP alapban 74880-as sebességen kommunikál.

Előzmény: Törölt nick (2017)
Vargham Creative Commons License 2016.07.24 0 0 2018

sajnos nekem ahhoz nincs kézügyességem, hogy olyan pici lábra rátudjak forrasztani :( Esetleg van rá más módszer?

Van. Vegyél olyan modult, aminek ki vannak vezetve a lábai valami nagyobb csatlakozóra.

 

Például Node MCU

900 Ft, és kb 15-20 nap alatt ide is ér.

http://www.aliexpress.com/item/New-Wireless-module-CH340-NodeMcu-V3-Lua-WIFI-Internet-of-Things-development-board-based-ESP8266-We/32565317233.html

 

Ha sürgős, akkor van itthon is, csak kicsit drágább. (3000 Ft)

http://www.hestore.hu/prod_10036635.html

Előzmény: Törölt nick (2017)
Törölt nick Creative Commons License 2016.07.24 0 0 2017

Halihó :-)

 

Eljutottam odáig, hogy kommunikál már az arduinoval és az arduinon fut egy TCP/IP szerver amire telnettel tudok bejelentkezni. A probléma, hogy ahogyan nézem nem tudom vizsgálni a bevitt paramétereket ugyanis a serial kimeneten értelmetlen kérdőjelek sora jelenik meg mintha karakter kódolás probléma lenne. De rendben feladom most szereztem egy USB TTL konvertert amivel elvileg már tudom magát az ESP - t programozni. Viszont itt adódik a kérdés, hogy hogyan tudok még egy GPIO - ot hozzá rakni mert RGB ledszalagot szeretnék vele irányítani. Néztem Youtube - on, hogyan vezetik ki az IC lábait de sajnos nekem ahhoz nincs kézügyességem, hogy olyan pici lábra rátudjak forrasztani :( Esetleg van rá más módszer?

 

Elöre is nagyon köszönöm :-)

Előzmény: mekkGyver (2008)
Zizikus Creative Commons License 2016.07.20 0 0 2016

"bejjebb" :-(

 

Bocsánat!

Előzmény: Zizikus (2015)
Zizikus Creative Commons License 2016.07.19 0 0 2015

Jazzkedvelo:

 

Köszi a segítséget, így már bejjebb vagyok kicsivel. Még nem tudom melyik megoldás lesz nekem az igazi, a rendszer ötlete van még csak meg, meg pár alkatrész. Ha lesz valami akkor szólók még! :-)

 

Nem tudtam, hogy vannak 12c library-k külön, azt hittem, hogy az a vásárolt ezközökben benne van, nem kell külön hozzá.

 

Jó teszt, nem tudom miért csinálta, de jó tudni!

 

 

Előzmény: titusz99 (2014)
titusz99 Creative Commons License 2016.07.19 0 0 2014

Végeztem egy tesztet.

A 4 bemenet kiolvasása 0,5 másodpercig tartott, a ráta 8!

A 4 bemenet kiolvasása 0,128 másodpercig tartott, a ráta 32!

A 4 bemenet kiolvasása 0,018 másodpercig tartott, a ráta 860!

Előzmény: titusz99 (2013)
titusz99 Creative Commons License 2016.07.19 0 0 2013

Van több fajta I2C library.

Szinte mindegyik késleltetést használ.

Így a konverzió alatt a proci semmit sem csinál, csak várakozik az eredményre.

Találtam egy nbwire nevű library-t, ami már alkalmas a feladatra.

Ennek egyik variánsa a I2Cdev library, de jól láthatóan a fejlesztése elakadt.

Persze könnyen pótolni lehet a hiányt és sajnos kellett is.

Egyenlőre működik lekérdezéses üzemmódban.

Ami nekem kell, hogy kb 10 mintavétel csatornánként ami összesen 40 mintavételt jelent másodpercenként.

 

 

Előzmény: Zizikus (2011)
Törölt nick Creative Commons License 2016.07.18 0 0 2012

Ha +-25V-os jelet akarsz mérni, akkor két egyszerűbb lehetőséged van: vagy aktív vagy passzív eszközt kell illeszteni hozzá. A passzív az egy ellenállásosztó ahogy írtad, az aktív az egy erősítő fokozat ahol az erősítési fokozat erősítése egynél kisebb, azaz pl 0.2, egy műveleti erősítővel egyszerűen megvalósítható. Ez utóbbinál pl megoldható az is, hogy logaritmikus karakterisztikájú erősítést használsz, aminek következtében a kisebb jeleket jobban a nagyobbakat meg kevésbé erősíti/csökkenti. persze ezt később szoftverből korrigálni kell. Kérdés mekkora felbontás és pontosság kell. de ha jó a lineáris alapból, akkor ezzel se kell molyolni.

 

A feszosztó egyszerűbb, de figyelembe kell venni a terhelési viszonyokat - azaz amire rácsatlakozol mint bemenet, annak milyen a kimeneti impedanciája, ehhez illik illeszteni.  Ez nem mindig tud megvalósulni passzív illesztéssel (ne terheljen be túlzottan a feszosztó a másik kimenetére, mert ez komoly galibát tud okozna, akár frekvenciafüggő viselkedést is).

 

Ha a 25V-nál nagyobb jeleket vágni szeretnék, akkora  legegyszerűbb egy zener diódás határoló/limiter, Aztán persze van ennél komolyabb megoldás is, de kérdés mi a cél.

Előzmény: Zizikus (2010)
Zizikus Creative Commons License 2016.07.18 0 0 2011

Nem vágom rendesen, de kell hozzá ilyen library?

 

I2C szabvány megy neki, szóval elég lesz a wire.h, plusz a  Adafruit_ADS1015.h.

 

A cimzése, meg attól függ, hogy hová kötötted az ADR lábat. Szerintem nem kell semmilyen plusz library.

Előzmény: titusz99 (2009)
Zizikus Creative Commons License 2016.07.18 0 0 2010

Szia!

 

Még nem foglaloztam ezzel, de szeretnék! Gondom van az adatok gyors mentésével, valamint nem értem pontosan hogyan lehet megoldani azt, hogy ha pl 5V-nál nagyobb feszültséget szeretnék mérni vele, akkor azt hogyan lehet? Feszosztóval? Akkor meg az lesz a gond, hogy ha túl kicsi a bemenet, akkor azt túl kicsire osztja. Hogyan lehet megoldani, hogy nagy feszültség tartományban legyen jó ez az ezköz. Tudnál ebben segíteni nekem?

 

Kb. -25V-->+25V tartományban kellene mérnem, azonban olyan is lehet, hogy ABS|25V|-nál nagyobb jelek is lehetnek, de azok nem mérési körülmények között érnék az AD konvertert, gondolom oda valami védelem kellene, de nem tudom az milyen, hogyan lehet csinálni. Ötlet?

 

Nézek Library-t.

Előzmény: titusz99 (2009)
titusz99 Creative Commons License 2016.07.18 0 0 2009

Sziasztok!

 

Foglalkozott már valaki a ADS1115 konverterrel?

Milyen I2C library-t használt hozzá?

 

mekkGyver Creative Commons License 2016.07.16 0 0 2008

Én is inkább azt ajánlanám, hogy az esp-t programozd. Ugyanúgy tudod arduinoban. Ha kevés a port, akkor könnyen tudod bővíteni, de ki lehet vezetni az ic lábait is a 02-ről. De vegyél egy másik modult, amiben minden ki van vezetve, és megspórolod az uno-t, a 02 neg jó lesz másra. Legalábbis én nem vacakolnék illesztésekkel, meg tx/rx-el, ha nem muszáj...

Előzmény: Törölt nick (2000)
BuNnY Creative Commons License 2016.07.16 0 0 2007

Mi a helyzet a 3.3V-al? Mert a wifi modul arról megy, és az rx-tx-hez is azt illik használni. Egyébként a legegyszerűbb ha veszel hozzá egy "tokot", ami megoldja a feszültség átalakítást kiválóan. Egyébként én már próbálkoztam vele, nekem pl. az volt a gond, hogy az arduino nem bírta ellátni árammal, és ez elég sok hibát okozott. Így én végül direkt esp8266-ot programozom inkább. Arduinon keresztül csak AT parancsokat tudsz használni, azokat direktbe is küldheted neki és akkor nem kell a lib-ekkel vacakolni.

 

https://hackaday.io/project/2879-esp8266-wifi-module-library

http://williamdurand.fr/2015/03/17/playing-with-a-esp8266-wifi-module/

 

Kiindulásnak a bookmarkomban ezeket találtam.

Előzmény: Törölt nick (2000)
Zizikus Creative Commons License 2016.07.16 0 0 2006

Próbáld mindenhol ezt:

 

 sevseg.refreshDisplay(); // Must run repeatedly; don't use blocking code (ex: delay()) in the loop() function or this won't work right

 

 

(Már ha a te kódodban a output() ezt jelntette. Remélem igem!)

 

Az lehet a gond, hogy a Te példaprogramjaidban használt sevseg.h nem egyezik meg amit letöltöttél. Nem gond, csak ki kell cserélni pár dolgot. Szerintem csak verzió probléma, semmi több.

 

A fordító csinálhat olyat, hogy elsőnek a függvényeket nézni, majd utána aloop-ot, ezért lehet nem azzal kezdte elsőnek.

 

Ha megy ezzel, akkor javaslom, hogy ha csinálsz egy biztonsági mentést majd a kódodról, akkor a sevseg library-d is tedd ,ellé, hogy később is menjen.

Előzmény: janitoth (2004)
323i Creative Commons License 2016.07.16 0 0 2005

Milyen bootloader verziot tolthet fel ilyenkor az arduinora?

Előzmény: 323i (1997)
janitoth Creative Commons License 2016.07.16 0 0 2004

Szia!

Az én sevseg-em innen való:

 

https://github.com/DeanIsMe/SevSeg

 

Jani

Előzmény: Zizikus (2001)
janitoth Creative Commons License 2016.07.16 0 0 2003

Szia, köszi a segítséget!

A setNumber bejött, most viszont a void smartDelay-ben levő PrintOutput-ra írja hogy has no member in sevseg. Az ino-ban pirossal van írva a hibaüzenet tárgya.

Ami azért érdekes,mert a void loop-ban is van egy sevseg.PrintOutput és azon átsiklott.

Te érted ezt? Csatolom az eddigiek figyelembe vételével átírt ino-t:

 

#include "SevSeg.h"
#include "TinyGPS++.h"

//Instance aanmaken voor GPS en Display
SevSeg sevseg;
TinyGPSPlus gps;

//int Snelheid variable vullen
int Snelheid=88;

void setup() {
     byte numDigits = 2;
     byte digitPins[] = {A2, 5};
     byte segmentPins[] = {6, 7, 4, A3, A4, A1, A0, A5};  
     sevseg.begin(COMMON_ANODE, numDigits, digitPins, segmentPins);
     sevseg.setBrightness(50);
     Serial.begin(9600);  
}

void loop()
{
  Snelheid = (gps.speed.kmph());
  sevseg.setNumber(Snelheid,0);  
  sevseg.PrintOutput();
  smartDelay(10);
}


void smartDelay(unsigned long ms)
{
  unsigned long start = millis();
  do
  {
    while (Serial.available())
      gps.encode(Serial.read());
      sevseg.PrintOutput();
  } while (millis() - start < ms);
}

void printFloat(float val, bool valid, int len, int prec)
{
  if (!valid)
  {
    while (len-- > 1)
    displayNumber(0000);
      Serial.print('*');
    Serial.print(' ');
  }
  else
  {
    Serial.print(val, prec);
    int vi = abs((int)val);
    int flen = prec + (val < 0.0 ? 2 : 1); // . and -
    //flen += vi >= 1000 ? 4 : vi >= 100 ? 3 : vi >= 10 ? 2 : 1;
    flen += vi >= 10 ? 2 : 1;
    for (int i=flen; i<len; ++i)
      Serial.print(' ');
      displayNumber(val);
  }
  smartDelay(0);
}

void displayNumber(int toDisplay) {
#define DISPLAY_BRIGHTNESS  500

#define DIGIT_ON  HIGH
#define DIGIT_OFF  LOW

  long beginTime = millis();

  //for(int digit = 4 ; digit > 0 ; digit--) {
    for(int digit = 2 ; digit > 0 ; digit--) {
    
    //Turn on a digit for a short amount of time
    switch(digit) {
    case 1:
      digitalWrite(digit1, DIGIT_ON);
      break;
    case 2:
      digitalWrite(digit2, DIGIT_ON);
      break;
//    case 3:
//      digitalWrite(digit3, DIGIT_ON);
//      break;
//    case 4:
//      digitalWrite(digit4, DIGIT_ON);
//      break;
    }

    //Turn on the right segments for this digit
    lightNumber(toDisplay % 10);
    toDisplay /= 10;

    delayMicroseconds(DISPLAY_BRIGHTNESS); //Display this digit for a fraction of a second (between 1us and 5000us, 500 is pretty good)

    //Turn off all segments
    lightNumber(10);
//
//    //Turn off all digits
    digitalWrite(digit1, DIGIT_OFF);
    digitalWrite(digit2, DIGIT_OFF);
//    digitalWrite(digit3, DIGIT_OFF);
//    digitalWrite(digit4, DIGIT_OFF);
  }

  while( (millis() - beginTime) < 10) ; //Wait for 20ms to pass before we paint the display again
}

//Given a number, turns on those segments
//If number == 10, then turn off number
void lightNumber(int numberToDisplay) {

#define SEGMENT_ON  LOW
#define SEGMENT_OFF HIGH

  switch (numberToDisplay){

  case 0:
    digitalWrite(segA, SEGMENT_ON);
    digitalWrite(segB, SEGMENT_ON);
    digitalWrite(segC, SEGMENT_ON);
    digitalWrite(segD, SEGMENT_ON);
    digitalWrite(segE, SEGMENT_ON);
    digitalWrite(segF, SEGMENT_ON);
    digitalWrite(segG, SEGMENT_OFF);
    break;

  case 1:
    digitalWrite(segA, SEGMENT_OFF);
    digitalWrite(segB, SEGMENT_ON);
    digitalWrite(segC, SEGMENT_ON);
    digitalWrite(segD, SEGMENT_OFF);
    digitalWrite(segE, SEGMENT_OFF);
    digitalWrite(segF, SEGMENT_OFF);
    digitalWrite(segG, SEGMENT_OFF);
    break;

  case 2:
    digitalWrite(segA, SEGMENT_ON);
    digitalWrite(segB, SEGMENT_ON);
    digitalWrite(segC, SEGMENT_OFF);
    digitalWrite(segD, SEGMENT_ON);
    digitalWrite(segE, SEGMENT_ON);
    digitalWrite(segF, SEGMENT_OFF);
    digitalWrite(segG, SEGMENT_ON);
    break;

  case 3:
    digitalWrite(segA, SEGMENT_ON);
    digitalWrite(segB, SEGMENT_ON);
    digitalWrite(segC, SEGMENT_ON);
    digitalWrite(segD, SEGMENT_ON);
    digitalWrite(segE, SEGMENT_OFF);
    digitalWrite(segF, SEGMENT_OFF);
    digitalWrite(segG, SEGMENT_ON);
    break;

  case 4:
    digitalWrite(segA, SEGMENT_OFF);
    digitalWrite(segB, SEGMENT_ON);
    digitalWrite(segC, SEGMENT_ON);
    digitalWrite(segD, SEGMENT_OFF);
    digitalWrite(segE, SEGMENT_OFF);
    digitalWrite(segF, SEGMENT_ON);
    digitalWrite(segG, SEGMENT_ON);
    break;

  case 5:
    digitalWrite(segA, SEGMENT_ON);
    digitalWrite(segB, SEGMENT_OFF);
    digitalWrite(segC, SEGMENT_ON);
    digitalWrite(segD, SEGMENT_ON);
    digitalWrite(segE, SEGMENT_OFF);
    digitalWrite(segF, SEGMENT_ON);
    digitalWrite(segG, SEGMENT_ON);
    break;

  case 6:
    digitalWrite(segA, SEGMENT_ON);
    digitalWrite(segB, SEGMENT_OFF);
    digitalWrite(segC, SEGMENT_ON);
    digitalWrite(segD, SEGMENT_ON);
    digitalWrite(segE, SEGMENT_ON);
    digitalWrite(segF, SEGMENT_ON);
    digitalWrite(segG, SEGMENT_ON);
    break;

  case 7:
    digitalWrite(segA, SEGMENT_ON);
    digitalWrite(segB, SEGMENT_ON);
    digitalWrite(segC, SEGMENT_ON);
    digitalWrite(segD, SEGMENT_OFF);
    digitalWrite(segE, SEGMENT_OFF);
    digitalWrite(segF, SEGMENT_OFF);
    digitalWrite(segG, SEGMENT_OFF);
    break;

  case 8:
    digitalWrite(segA, SEGMENT_ON);
    digitalWrite(segB, SEGMENT_ON);
    digitalWrite(segC, SEGMENT_ON);
    digitalWrite(segD, SEGMENT_ON);
    digitalWrite(segE, SEGMENT_ON);
    digitalWrite(segF, SEGMENT_ON);
    digitalWrite(segG, SEGMENT_ON);
    break;

  case 9:
    digitalWrite(segA, SEGMENT_ON);
    digitalWrite(segB, SEGMENT_ON);
    digitalWrite(segC, SEGMENT_ON);
    digitalWrite(segD, SEGMENT_ON);
    digitalWrite(segE, SEGMENT_OFF);
    digitalWrite(segF, SEGMENT_ON);
    digitalWrite(segG, SEGMENT_ON);
    break;

  case 10:
    digitalWrite(segA, SEGMENT_OFF);
    digitalWrite(segB, SEGMENT_OFF);
    digitalWrite(segC, SEGMENT_OFF);
    digitalWrite(segD, SEGMENT_OFF);
    digitalWrite(segE, SEGMENT_OFF);
    digitalWrite(segF, SEGMENT_OFF);
    digitalWrite(segG, SEGMENT_OFF);
    break;
  }
}

Előzmény: Zizikus (2002)
Zizikus Creative Commons License 2016.07.15 0 0 2002

Próbáld meg ez alapján:

 

sevseg.setNumber("A te változód, ami int", 0);

 

Azaz newnumber helyett ezt, vagy:

 

sevseg.setNumber("A te változód, ami int", byte (0));

 

Elképzelhető, hogy a te sevseg.h-d korábbi, mint a kód, ahonnan nézted. Ezt a tippet a letöltött seveg.h + example könyvtárban lévő kód adta.

Előzmény: Zizikus (2001)
Zizikus Creative Commons License 2016.07.15 0 0 2001

Szia!

 

Tudnál egy linket küldeni, amiben az a SevSeg.h-van, amit használsz?

 

Off:

Ami még lehet gond, hogy a változó neve megegyezik a seveg-el. (Lehet nem akkora gond, de más nyelveken azért okozhat problémát) A változód neve megegyezik a típussal, objektom nevével. Szerintem nem annyira jó ez, de lehet tévedek. Ha így van akkor bocsánat!

 

 

Előzmény: janitoth (1999)
Törölt nick Creative Commons License 2016.07.15 0 0 2000

Sziasztok!

 

Szeretnék érdeklődni, hogy valaki használ e közületek ESP8266 wifi modult Arduino Uno - val? Keresek hozzá ugyanis egy megfelelő könyvtárat, hogy az Arduino egy mint webszerver (vagy telnet szerver) működjön a wifi modul pedig csak a kapcsolatért feleljen. Találtam jó pár példát de akárhogy kötögetem TX,RX kimeneteket nem tudok kommunikálni vele. Már elértem azt, hogy csatlakozni tudjon a hálózatomhoz de tovább semmilyen választ nem ad nekem.

Sok példa van, hogy közvetlen a modulra írják meg a webszervert és arduino nélkül használják de sajnos az én feladatomhoz túl kevés a GPIO - oja (3db viszont az ESP8266-02 amit végül szeretnék használni annak még kevesebb van)

 

Ezzel kísérletezem most:

https://www.amazon.de/gp/product/B01BMK666I/ref=oh_aui_detailpage_o07_s00?ie=UTF8&psc=1

 

Ezt szeretném végül használni:

https://www.amazon.de/gp/product/B015R62BP8/ref=oh_aui_detailpage_o06_s00?ie=UTF8&psc=1

 

Ezzel a könyvtárral értem el, hogy csatlakozzon a hálóatomhoz:

https://github.com/INEXTH/Arduino-ESP8266_libs

 

Előre is nagyon köszönöm ha valakinek ötlete vagy megoldása van.

janitoth Creative Commons License 2016.07.15 0 0 1999

Köszi a választ!

Tablet,mobil nem játszik a mérete miatt. Nem akarom teljesen felrobbantani a műszerfalat, csak a km/órát cserélném le. Továbbá az említett készülékek fényereje nappali fényben nem igazán kielégítő. A forrás első változatának alapjait értem nagyjából. A probéma csak annyi,hogy a szerzője szerint sem műxik. A javított változat a SevSeg bevezetésével jóval egyszerűbbé teszi az ino megírását, viszont bonyolítja is a helyzetet az egyszerű földi halandó számára. Ugyanis "láthatatlan" dolgokra támaszkodik, amik a SevSeg-ben vannak "eldugva".( pl NewNum, printOut ).

Szóval a gondom még mindíg az, mi lehet az adott ino-ban a gond, amiért nem ismeri fel a NewNum-ot az ellenőrzés a SevSeg-ben?

Jani

 

Előzmény: mekkGyver (1996)
janitoth Creative Commons License 2016.07.15 0 0 1998

Köszi a segítő szándékú válaszod.

Magamról anyit: az Arduinoval valóban most kezdek foglalkozni, amúgy 20-25 éve foglalkozom elektronikával. Építettem már erősítót, órát, karácsonyfa villogót stb. Nem kit-ből, a nyákot is magam tervezem,maratom, beültetem.Az Arduinoban az tetszett meg,hogy szinte bármire lehet használni. Ezért gondoltam, jó lesz sebességmérőnek is. A neten talált alkalmazás nem tűnik bonyolultnak, három egységből áll (Arduino+GPSmodul+LEDkijelző). Szerintem nem nagy kunszt. A fogyasztás nem érdekes, a robogó akkuja bírja(robbanó motoros, nem elektromos). A pontosság, ha tíz százalékon belül van akkor megfelelő,hisz az autóm gyári kmórája is csal annyit. A kerékpárok sebességmérője valóban alternatíva lehetne,csakhogy azok LCD kijelzősek én meg ragaszkodom a LED-hez. Amúgy már kész a kapcsolás,összeszereltem az eszközt, már csak az agya hiányzik.

Tehát a kérdésem még az eredeti: mi lehet a probléma a NewNummal az általam átírt ino-ban?

Jani

Előzmény: Vargham (1995)
323i Creative Commons License 2016.07.14 0 0 1997

Megerkezett a nano is, mar csak az uno-t varom.

A nano-n szinten lehal a wdt, a tapot jelzo piros led vilagit, a masik pedig nagyon gyorsan villog.

 

Ha ez (https://sysexit.wordpress.com/2013/02/07/burning-a-bootloader-to-an-arduino-nano-using-another-arduino/) alapjan osszekotom a megat es a nanot, mondjuk a mega lesz az isp programozo es a nano-ra fogom feltolteni a bootloadert. Ez mukodhet?

 

A leirasban ez a sorrend szerepel:

1. usb kabellel osszekotjuk a (az en esetemben) mega-t a geppel es elinditjuk az Arduino IDE-t

2. beallitjuk a megfelelo soros portot es board-ot (nem jut eszembe megfelelo magyar szo) programban

3. megnyitjuk a peldak kozul az ArduinoISP-t, leforditjuk es feltoltjuk a board-ra

4. ezutan ossze kell kabelezni a ket Arduino-t

5. az isp-t visszadugni usb-vel a gepre

6. kivalasztjuk a programban a board-ok kozul azt, amelyikre a bootload-ert akarjuk feltolteni

7. eszkozok -> "Programmer" menu -> Arduino as ISP

8. vegul pedig Eszkozok -> Burn Bootloader

 

Ha minden jol ment, akkor par masodperc mulva a "flashy" led villogni kezd es kesz a bootload-er irasa.

Probalta ezt mar valaki, akinel nem mukodott a wdt es utana megjavult?

Előzmény: mekkGyver (1974)
mekkGyver Creative Commons License 2016.07.13 0 0 1996

Először is! Szerintem csináld nyugodtan, én is szeretek nagyban indítani, aztán a buktatók leküzdése közben vésődnek be legjobban a dolgok. Aki az alapokkal szüttyög, az lehet, hogy megunja, mire valami értelmeset kezdene építeni. A legfontosabb a lelkesedés, meg hogy legyen mindig kihívás. Az más kérdés, hogy tényleg nem szerencsés egy robogón csak erre hagyatkozni, én biztosan tennék rá egy kapcsolót, meg egy ledet. Alapból kerékfordulat alapján számolná a sebességet, ha megtalálta a műholdakat, akkor a led jelezné, hogy átkapcsolható GPS-re, ha akarod. A forrás egyébként könnyen értelmezhető, egyszerű, én annyit azért átírnék rajta, hogy amíg nincs vétel, addíg nem 0000, hanem ---- legyen a kijelzőn.

Még bulibb lenne egy tabletet (vagy kisebb kijelzős mobilt) "felheggeszteni" valahogyan kulturált vízhatlan tokban. Egy spéci kernellel a töltés kordában tartható, és akkor van térképed, köridő mérés, gyorsulásmérés... még sorolhatnám, de az már nem arduino téma.

Előzmény: janitoth (1994)
Vargham Creative Commons License 2016.07.12 0 0 1995

Most ismerkedek az arduinoval

Egyszerűbb dolgok már mennek? LED villogatás, nyomógomb lekérdezés, soros kommunikáció számítógéppel? (Software serial? USB TTL?)

Ezekkel szükséges megismernedni, mert:

1. Ha még nem tudsz programozni, akkor megtanulod az alapokat. (Nem írtad, hogy milyen szinten vagy.)

2. Megérted a mikrokontrolleres fejlesztés alapjait.

3. A fentebb írtak segítségével fogsz tudni HIBÁT KERESNI a sebességmérő fejlesztése során.

 

Kérdés egy lépéssel hátrébb lépve:

Minek ez neked? Ha ez az új hobbid, és meg akarsz tanulni mikrokontrollerrel dolgozni, akkor jó. Csak kezdj valami egyszerűbbel.

Ha csak az elromlott sebességmérőt akarod kiváltani, akkor szerintem ne vacakolj a műholdas rendszerrel. Nehézkes, sokat fogyaszt, és pontatlan. Kizárólag sebességmérésre a legjobb valamilyen kerékfordulatszám mérő eszköz. Érdemes például egy biciklis sebességmérőből kiindulni. Kezdőként tök jó projekt számolni az impulzusokat, abból és a kerék kerületéből pedig a sebességet. Átlátható, gyors, pontos, keveset fogyaszt.

 

Vagy vegyél egyet készen. ;-D

Előzmény: janitoth (1994)
janitoth Creative Commons License 2016.07.12 0 0 1994

Sziasztok!

Most ismerkedek az arduinoval, ezért lehet ökörségeket is fogok kérdezni.

Tény: tönkrement a robogóm sebességmérője, ezt szeretném kiváltani egy GPS alapú digitális sbességmérővel  amit Arduino vezérel. Találtam a neten kapcsolást meg hozzávaló ködot is, Holland nyelven :-(

Annyit ki tudtam venni hogy ez négy digitre készült, de nekem csak kettőre van szükségem. Megpróbáltam átírni, de nem sikerült. Az Arduino Libraries-ba feltöltöttem a TyniGPS és a SevSeg mappát is.

A loopban problémázik az ellenőrzés a NewNum-mal. Szerinte nincs ilyen a sevseg-ben. Olyan létezik,hogy az általam Github-ról letöltött SevSeg-ben nincs NewNum? Olyat próbáltam,hogy a NewNum-os sort töröltem az ino-ból,de akkor meg a következő sorban problémázott az ellenőrzés a PrintOutput-tal. Tovább nem jutottam. Tudnátok segíteni?

 

A talált sebességmérő:

https://gathering.tweakers.net/forum/list_messages/1596164

Az általam és némi segítséggel átírt ino:

 

#include "SevSeg.h"
#include "TinyGPS++.h"

//Instance aanmaken voor GPS en Display
SevSeg sevseg;
TinyGPSPlus gps;

//int Snelheid variable vullen
int Snelheid=88;

void setup() {
     byte numDigits = 2;
     byte digitPins[] = {A2, 5};
     byte segmentPins[] = {6, 7, 4, A3, A4, A1, A0, A5};  
     sevseg.begin(COMMON_ANODE, numDigits, digitPins, segmentPins);
     sevseg.setBrightness(50);
     Serial.begin(9600);  
}

void loop()
{
  Snelheid = (gps.speed.kmph());
  sevseg.NewNum(Snelheid,0);  
  sevseg.PrintOutput();
  smartDelay(10);
}


void smartDelay(unsigned long ms)
{
  unsigned long start = millis();
  do
  {
    while (Serial.available())
      gps.encode(Serial.read());
      sevseg.PrintOutput();
  } while (millis() - start < ms);
}

void printFloat(float val, bool valid, int len, int prec)
{
  if (!valid)
  {
    while (len-- > 1)
    displayNumber(0000);
      Serial.print('*');
    Serial.print(' ');
  }
  else
  {
    Serial.print(val, prec);
    int vi = abs((int)val);
    int flen = prec + (val < 0.0 ? 2 : 1); // . and -
    //flen += vi >= 1000 ? 4 : vi >= 100 ? 3 : vi >= 10 ? 2 : 1;
    flen += vi >= 10 ? 2 : 1;
    for (int i=flen; i<len; ++i)
      Serial.print(' ');
      displayNumber(val);
  }
  smartDelay(0);
}

void displayNumber(int toDisplay) {
#define DISPLAY_BRIGHTNESS  500

#define DIGIT_ON  HIGH
#define DIGIT_OFF  LOW

  long beginTime = millis();

  //for(int digit = 4 ; digit > 0 ; digit--) {
    for(int digit = 2 ; digit > 0 ; digit--) {
    
    //Turn on a digit for a short amount of time
    switch(digit) {
    case 1:
      digitalWrite(digit1, DIGIT_ON);
      break;
    case 2:
      digitalWrite(digit2, DIGIT_ON);
      break;
//    case 3:
//      digitalWrite(digit3, DIGIT_ON);
//      break;
//    case 4:
//      digitalWrite(digit4, DIGIT_ON);
//      break;
    }

    //Turn on the right segments for this digit
    lightNumber(toDisplay % 10);
    toDisplay /= 10;

    delayMicroseconds(DISPLAY_BRIGHTNESS); //Display this digit for a fraction of a second (between 1us and 5000us, 500 is pretty good)

    //Turn off all segments
    lightNumber(10);
//
//    //Turn off all digits
    digitalWrite(digit1, DIGIT_OFF);
    digitalWrite(digit2, DIGIT_OFF);
//    digitalWrite(digit3, DIGIT_OFF);
//    digitalWrite(digit4, DIGIT_OFF);
  }

  while( (millis() - beginTime) < 10) ; //Wait for 20ms to pass before we paint the display again
}

//Given a number, turns on those segments
//If number == 10, then turn off number
void lightNumber(int numberToDisplay) {

#define SEGMENT_ON  LOW
#define SEGMENT_OFF HIGH

  switch (numberToDisplay){

  case 0:
    digitalWrite(segA, SEGMENT_ON);
    digitalWrite(segB, SEGMENT_ON);
    digitalWrite(segC, SEGMENT_ON);
    digitalWrite(segD, SEGMENT_ON);
    digitalWrite(segE, SEGMENT_ON);
    digitalWrite(segF, SEGMENT_ON);
    digitalWrite(segG, SEGMENT_OFF);
    break;

  case 1:
    digitalWrite(segA, SEGMENT_OFF);
    digitalWrite(segB, SEGMENT_ON);
    digitalWrite(segC, SEGMENT_ON);
    digitalWrite(segD, SEGMENT_OFF);
    digitalWrite(segE, SEGMENT_OFF);
    digitalWrite(segF, SEGMENT_OFF);
    digitalWrite(segG, SEGMENT_OFF);
    break;

  case 2:
    digitalWrite(segA, SEGMENT_ON);
    digitalWrite(segB, SEGMENT_ON);
    digitalWrite(segC, SEGMENT_OFF);
    digitalWrite(segD, SEGMENT_ON);
    digitalWrite(segE, SEGMENT_ON);
    digitalWrite(segF, SEGMENT_OFF);
    digitalWrite(segG, SEGMENT_ON);
    break;

  case 3:
    digitalWrite(segA, SEGMENT_ON);
    digitalWrite(segB, SEGMENT_ON);
    digitalWrite(segC, SEGMENT_ON);
    digitalWrite(segD, SEGMENT_ON);
    digitalWrite(segE, SEGMENT_OFF);
    digitalWrite(segF, SEGMENT_OFF);
    digitalWrite(segG, SEGMENT_ON);
    break;

  case 4:
    digitalWrite(segA, SEGMENT_OFF);
    digitalWrite(segB, SEGMENT_ON);
    digitalWrite(segC, SEGMENT_ON);
    digitalWrite(segD, SEGMENT_OFF);
    digitalWrite(segE, SEGMENT_OFF);
    digitalWrite(segF, SEGMENT_ON);
    digitalWrite(segG, SEGMENT_ON);
    break;

  case 5:
    digitalWrite(segA, SEGMENT_ON);
    digitalWrite(segB, SEGMENT_OFF);
    digitalWrite(segC, SEGMENT_ON);
    digitalWrite(segD, SEGMENT_ON);
    digitalWrite(segE, SEGMENT_OFF);
    digitalWrite(segF, SEGMENT_ON);
    digitalWrite(segG, SEGMENT_ON);
    break;

  case 6:
    digitalWrite(segA, SEGMENT_ON);
    digitalWrite(segB, SEGMENT_OFF);
    digitalWrite(segC, SEGMENT_ON);
    digitalWrite(segD, SEGMENT_ON);
    digitalWrite(segE, SEGMENT_ON);
    digitalWrite(segF, SEGMENT_ON);
    digitalWrite(segG, SEGMENT_ON);
    break;

  case 7:
    digitalWrite(segA, SEGMENT_ON);
    digitalWrite(segB, SEGMENT_ON);
    digitalWrite(segC, SEGMENT_ON);
    digitalWrite(segD, SEGMENT_OFF);
    digitalWrite(segE, SEGMENT_OFF);
    digitalWrite(segF, SEGMENT_OFF);
    digitalWrite(segG, SEGMENT_OFF);
    break;

  case 8:
    digitalWrite(segA, SEGMENT_ON);
    digitalWrite(segB, SEGMENT_ON);
    digitalWrite(segC, SEGMENT_ON);
    digitalWrite(segD, SEGMENT_ON);
    digitalWrite(segE, SEGMENT_ON);
    digitalWrite(segF, SEGMENT_ON);
    digitalWrite(segG, SEGMENT_ON);
    break;

  case 9:
    digitalWrite(segA, SEGMENT_ON);
    digitalWrite(segB, SEGMENT_ON);
    digitalWrite(segC, SEGMENT_ON);
    digitalWrite(segD, SEGMENT_ON);
    digitalWrite(segE, SEGMENT_OFF);
    digitalWrite(segF, SEGMENT_ON);
    digitalWrite(segG, SEGMENT_ON);
    break;

  case 10:
    digitalWrite(segA, SEGMENT_OFF);
    digitalWrite(segB, SEGMENT_OFF);
    digitalWrite(segC, SEGMENT_OFF);
    digitalWrite(segD, SEGMENT_OFF);
    digitalWrite(segE, SEGMENT_OFF);
    digitalWrite(segF, SEGMENT_OFF);
    digitalWrite(segG, SEGMENT_OFF);
    break;
  }
}

 

 

Köszi: Jani

Törölt nick Creative Commons License 2016.06.30 0 0 1993

Egyébként sikerült ma estefelé összehoznom a Wiegand-os Olvasót gyakorlatban is az Arduinoval és a rokonságban létező összes transzponerrel feltöltenem. Viszont volt két apróság - ami kicsit megizzasztott.

Az egyik, hogy -talán védelmi szempontból- kártyaolvasás után egy bizonyos ideig nem hajlandó új jelet küldeni az Arduino felé az RFID reader. Pontosan nem mértem, de szerintem legalább egy perc. Biztos, hogy a reader az oka, mert olyankor nem is változik a led szine és nem csipog - amellett, hogy nem küld jelet. Viszont, ha resetelem az Arduino-t akkor nincs ilyen gond, így csináltam egy PIN-RESET átkötést. 

A másik érdekesség, hogy -miután lehúztam róla az USB kábelt és átengedtem tisztán a 12V tápellátásnak- nem vezérelte a relépanelt. Viszont ha visszadugtam csak az Arduino-ra (és nem volt csatlakoztatva a laptopra a másik fele), akkor minden ment tökéletesen. Olyan, mintha valami áramköröket ilyenkor összezárna. Biztos megvan a logikus magyarázata, de ehhez még túlságosan zöldfülű vagyok..

Törölt nick Creative Commons License 2016.06.30 0 0 1992

Jajj - munkahelyi ártalom, hogy ilyeneket írok :)).. Mármint, hogy kicsit túl voltam pörögve a munkahelyemen a napi rutinom mellett az RFID téma miatt s írtam a hülyeséget. 

Annyira mondjuk nem nyúltam félre, mert van endoszkópom is meg oszcilloszkópom is - legyen rá bizonyíték a youtube archivum ;)!

https://www.youtube.com/watch?v=OeUbQ7c8slw
https://www.youtube.com/watch?v=1e12Sfu98yE
https://www.youtube.com/watch?v=7k_iPv1xlGs

Endoszkópot korrózió felmérésre szoktam inkább használni - annak több értelme van, mint áramot mérni vele :) ..

Hát ha 125KHz cuccod van, az érdekelhet, mert szerintem lesz még pár RFID-s dolog a látókörömben. Én is gondolkodtam a Wiegand reader kibelezésén és átkötésén, de tegnap szétszedtem és akkor láttam, hogy kínai létére tényleg vízálló, mert ki van öntve az egész bele - hiába lebontható a külső burka. 

Előzmény: mekkGyver (1991)

Ha kedveled azért, ha nem azért nyomj egy lájkot a Fórumért!