Fórum témák

» Több friss téma
Fórum » Arduino
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Lapozás: OK   211 / 845
(#) atus1981 válasza halasizs hozzászólására (») Ápr 10, 2016 / 1
 
  1. // constants won't change. They're used here to
  2. // set pin numbers:
  3. const int buttonPin = 2; // the number of the pushbutton pin
  4. const int ledPin = 13; // the number of the LED pin
  5.  
  6. // variables will change:
  7. int buttonState = 0; // variable for reading the pushbutton status
  8.  
  9. void setup() {
  10. // initialize the LED pin as an output:
  11. pinMode(ledPin, OUTPUT);
  12. // initialize the pushbutton pin as an input:
  13. pinMode(buttonPin, INPUT);
  14. }
  15.  
  16. void loop() {
  17. // read the state of the pushbutton value:
  18. buttonState = digitalRead(buttonPin);
  19.  
  20. // check if the pushbutton is pressed.
  21. // if it is, the buttonState is HIGH:
  22. if (buttonState == HIGH) {
  23. // turn LED on:
  24. digitalWrite(ledPin, LOW);
  25. } else {
  26. // turn LED off:
  27. digitalWrite(ledPin, HIGH);
  28. }
  29. }


Így próbáld meg. Annyi változtatás történt, hogy ha a nyomógomb le van nyomva, akkor nem világít, ha fel van engedve, akkor világít.
(#) halasizs válasza atus1981 hozzászólására (») Ápr 10, 2016 /
 
Köszi! Működik. Össze is gyúrtam a hőmérős programmal.
(#) Brian88 válasza Bell hozzászólására (») Ápr 11, 2016 /
 
Arduinoval USB kábelen keresztül lementeni nem tudod, mert a Bootloder nem képes csak írni, ha jól tudom. Külső programozóval, pl USB-ISP-vel viszont már le tudod menteni.
(#) Bell válasza Brian88 hozzászólására (») Ápr 11, 2016 /
 
Nem próbáltam még ki.
Viszont a csatlakozások megvannak, a -c paraméterben többek között az Arduino, és még jó pár egyéb programozó is választható. Bővebben: Link
A hozzászólás módosítva: Ápr 11, 2016
(#) k3gy3tl3n hozzászólása Ápr 11, 2016 /
 
Sziasztok, szerintetek egy ilyen vagy egy ilyen ultrahangos vízálló modult tudnék használni vízmélység mérésre? Kvázi egy buta halradar lenne csak a víz mélységet mérni. Levegőben azt írják 3.5m - 4m-t tud.
(#) k3gy3tl3n válasza k3gy3tl3n hozzászólására (») Ápr 11, 2016 /
 
No elvileg lehet CsingCsung barátom diplomamunkájából kiindulva itt van némi infó morzsa ha valakit érdekel.
A hozzászólás módosítva: Ápr 11, 2016
(#) vargaf válasza k3gy3tl3n hozzászólására (») Ápr 11, 2016 /
 
Hibás a link!
(#) RoliNyh válasza vargaf hozzászólására (») Ápr 11, 2016 /
 
Kétszer van megadva benne a link, ki kell venni belőle az első részt (a második http:// előtti részt), akkor működik...
A hozzászólás módosítva: Ápr 11, 2016
(#) k3gy3tl3n válasza RoliNyh hozzászólására (») Ápr 11, 2016 /
 
Ez érdekes, nálam mindegyiuk link működik. Valószínű azért mert a PDF már levan töltve a gépemre, sorry
(#) vargaf válasza k3gy3tl3n hozzászólására (») Ápr 11, 2016 /
 
Kérésemre a moderátor kijavította.
(#) k3gy3tl3n válasza vargaf hozzászólására (») Ápr 11, 2016 /
 
Igen láttam! Köszi neked is és a moderátor úrnak is!
(#) Tibicsek hozzászólása Ápr 11, 2016 /
 
Olyan problémával fordulok hozzátok, hogy EEPROM-ba szeretnék menteni és azt az adatot egyszer visszaolvasni, de nemsikerül az a baj az egésszel, hogy visszaolvasva kitudom vinni a kijelzőre, de utánna ezt a kiolvasott értéket szeretném tovább változtatni
  1. //Forasztópáka Béta verzió 3.0 új encoder programmal
  2. #include <LiquidCrystal.h>
  3. #include <MAX6675.h>
  4. #include <EEPROM.h>
  5.  
  6. static int pinA = 2;
  7. static int pinB = 3;
  8. volatile long aFlag = 0;
  9. volatile long bFlag = 0;
  10. volatile long encoderPos = 0;
  11. volatile long oldEncPos = 0;
  12. volatile long reading = 0;
  13. int maximum = 350;
  14. int minimum = 0;
  15. int futes = 4;
  16. int DO = 5;
  17. int CS = 6;
  18. int CLK = 7;
  19. int units = 1;
  20. int val;
  21. float Homerseklet = 0.0;
  22.  
  23. LiquidCrystal lcd(8, 9, 10, 11, 12, 13);
  24. MAX6675 temp(CLK,CS,DO, units);
  25.  
  26. uint8_t degree[8] = {140,146,146,140,128,128,128,128};
  27.  
  28. void setup() {
  29.   Serial.begin(9600);
  30.   pinMode(futes, OUTPUT);
  31.   lcd.begin(16, 2);
  32.   lcd.createChar(0, degree);
  33.   pinMode(pinA, INPUT_PULLUP);
  34.   pinMode(pinB, INPUT_PULLUP);
  35.   attachInterrupt(0,PinA,CHANGE);
  36.   attachInterrupt(1,PinB,CHANGE);
  37.   val = EEPROM.read(0);
  38.   Serial.println(val);
  39. }
  40.  
  41. void PinA(){
  42.   cli();
  43.   reading = PIND & 0xC;
  44.   if(reading == B00001100 && aFlag) {
  45.     encoderPos --;
  46.     bFlag = 0;
  47.     aFlag = 0;
  48.   }
  49.   else if (reading == B00000100) bFlag = 1;
  50.   sei();
  51. }
  52.  
  53. void PinB(){
  54.   cli();
  55.   reading = PIND & 0xC;
  56.   if (reading == B00001100 && bFlag) {
  57.     encoderPos ++;
  58.     bFlag = 0;
  59.     aFlag = 0;
  60.   }
  61.   else if (reading == B00001000) aFlag = 1;
  62.   sei();
  63. }
  64.  
  65. void loop(){
  66.   EEPROM.write(0, encoderPos);
  67.   Homerseklet = temp.read_temp();
  68.   if (encoderPos < minimum) {encoderPos = minimum;}
  69.   if (encoderPos > maximum) {encoderPos = maximum;}
  70.   if (oldEncPos != encoderPos)
  71.   lcd.clear();
  72.   lcd.setCursor(0,0);
  73.   lcd.print("Beallitott");
  74.   lcd.setCursor(11,0);
  75.   lcd.print(val);
  76.   #if ARDUINO >= 100
  77.   lcd.write((byte)0);
  78.   #else
  79.   lcd.print(0, BYTE);
  80.   #endif
  81.   lcd.print("C ");
  82.  
  83.   lcd.setCursor(0,1);
  84.   lcd.print("Mert");
  85.   lcd.setCursor(6,1);
  86.   lcd.print(Homerseklet);
  87.   #if ARDUINO >= 100
  88.   lcd.write((byte)0);
  89.   #else
  90.   lcd.print(0, BYTE);
  91.   #endif
  92.   lcd.print("C ");
  93.   if (encoderPos - 15 > Homerseklet){
  94.     digitalWrite(futes, HIGH);
  95.   }
  96.   else{
  97.     digitalWrite(futes, LOW);}
  98.     oldEncPos = encoderPos;
  99.   }

Tudom, hogy feleslegesnek fogjátok mondani, de én így szeretném megoldani a dolgot és elakadtam
(#) kapu48 válasza Tibicsek hozzászólására (») Ápr 11, 2016 /
 
Sajnos az EEPROM kapacitása véges!
– EEPROM, Endurance: 100,000 Write/Erase Cycles

Számoljunk sacra!
órajel = 16 000 000 / loop ciklus kb. 800 = 20000 írás/sec
Ilyen mérvű írási sebességnél percek alatt tönkre megy!
(#) Tibicsek válasza kapu48 hozzászólására (») Ápr 11, 2016 /
 
tudtam, hogy véges de akkor hogylehetne ezt megoldani?
(#) k3gy3tl3n válasza Tibicsek hozzászólására (») Ápr 11, 2016 /
 
Szia, elárulod hogy mi lesz ez? Miért kell elmenteni a hőmérsékletet másodpercenként pár ezerszer? Nem lehet, hogy feleslegesen kínzod az EEPROM-ot?
(#) Tibicsek válasza k3gy3tl3n hozzászólására (») Ápr 11, 2016 /
 
forrasztóállomás és a hömérsékletet akarom elmenteni hogy amikor bekapcsolom az utolsó beállított hömérséklet legyen
(#) k3gy3tl3n válasza Tibicsek hozzászólására (») Ápr 11, 2016 /
 
És esetleg egy tölthető elemet ha beépítenél? Amikor lekapcsolod erről kapna tápot, kiírja amit kell és leáll? Vagy egy jó nagy kondi amiben marad elég tartalék hogy lekapcsolás után még kiírj 1-2 bájtot? Csak ötletelek
(#) TheShaft válasza Tibicsek hozzászólására (») Ápr 11, 2016 /
 
Csak akkor mentsél, amikor a beállított hőfok változott, és eltelt már valamennyi idő (pl 5mp). Tehát amikor nyomkodod, állítod, akkor ne mentsen minden gombnyomásnál, csak ha már végeztél.
(#) TheShaft válasza k3gy3tl3n hozzászólására (») Ápr 11, 2016 /
 
Jó ötlet ez is. Egy külső soros SRAM áramkörbe lehetne a paramétereket menteni. Az SRAM tápját egy szuperkondenzátorról meg lehetne oldani. Innen beszerezhető.
(#) sunside válasza Tibicsek hozzászólására (») Ápr 11, 2016 /
 
Például egy Ilyennel. Ezt írhatod akárhányszor és legalább 10 évig megőrzi az adatot.
(#) k3gy3tl3n válasza TheShaft hozzászólására (») Ápr 11, 2016 /
 
Talán ez a legegyszerűbb megoldás, nem kell hozzá semmi, csak programot módosítani. Mindig menteni amikor változtattál a hőfokon és mondjuk 5 sec óta nem változott. Vagy potisra építeni a hőfok szabályzót és az ottmarad ahol hagytad Persze gondolom jelenleg digitálisan állítható ezért nem szeretnéd lebutítani potisra.
Talán még azt is lehetne figyelni hogy az éppen elmentett érték az EEPROM-ban különbözik e attól mint amit szeretnél beírni (ez így csak olvasás lenne), ha nem akkor nem írsz feleslegesen EEPROM-ot.
A hozzászólás módosítva: Ápr 11, 2016
(#) _BiG_ válasza Tibicsek hozzászólására (») Ápr 11, 2016 /
 
Azt se feledd, hogy az EEPROM írogatása nem csak az írt cellát "koptatja", hanem a többit is "rongálja", legalábbis a tartalmukat, így megfelelő számú írás után az egészet célszerű frissíteni. Erre szoktak rövid kódpéldát adni. Tehát ne csak a hőfokot tárold, hanem az írások számát is, amit a frissítéskor nullázol.
(#) Kera_Will válasza TheShaft hozzászólására (») Ápr 12, 2016 /
 
A tényleges ki/be kapcsolás is külön port(ok) változást vegyél igénybe.
Igaz tápot kap a hálózatból , de a fűtés teljesítmény vezérlője csak akkor indul be ha a power on külön portot állapotát változtatod vagy a valamelyik hőfok +/- gombot(port) tovább nyomod kb.. 5 - 10 sec ideig.Amikor ezek megtörtén(t)ek, akkor írod/olvasod a EEPROM tartalmat feltéve ha szükséges és nem volt változás az előzőekhez képest.
Persze ha időközben teljesen elmegy az áram akkor elfelejtheti ... de ez csak akkor amikor előzőekben említett utolsó beavatkozástól számított 5-10 sec változás kivárási időben lehet zavaró.
Persze ezt is lehet egy külön diódával leválasztott nagyobb pufferrel áthidalni ami csak az ardut táplálja.
A hozzászólás módosítva: Ápr 12, 2016
(#) Kera_Will válasza Tibicsek hozzászólására (») Ápr 12, 2016 /
 
Idézet:
„amikor bekapcsolom az utolsó beállított hömérséklet legyen”

Kell egy "árnyék" változót használni, ez tartalmazza az legutolsó hőfok beállítást.
Amikor valami ok miatt elmegy az energia akkor ezt az "árnyék" változót kell kiírni az EEPROM területre.(persze bekapcsoláskor ezt az árnyék változót feltölteni az EEPROMból olvasva)
Ezután már csak azt kell megoldani , hogy az energiaellátás megszűnését mivel érzékeled.
Az Arduino külön diódás leválasztású tápfeszültségről jár.

{soros diódán keresztül a puffer kondenzátortól E mögött egy nagyobb (500uF) másik puffer kondi ami csak az ardut látja el energiával max 30-50mA áramfelvételét}

Az egyik megszakítás képes portja pedig a külső pufferkondi tápját figyeli.
(Egy tranzisztoron keresztül.Aminek a kollektora lehúzza ("L") a port felhúzó ellenállását ,ez az arduino +tápján van ami a lediódázott külön pufferelt táprészről jár).
Amikor elmegy a teljes tápfesz akkor a páka mint több amperes terhelés gyorsan kisüti a táp pufferkondiját.
Ekkor a megszakítás portra kötött tranzisztor bázisa is lezár(amit a fő pufferre kötött soros ellenállás tartott nyitva).
Kollektora magas szintre emeli a hardveres megszakításra képes bemenetet.
Ekkor az arduinóban futó program érzékeli a megszakítást és azonnal kiírja az "árnyék változó" tartalmát az EEPROMba.
Erre biztos lesz ideje mert a lediódázott pufferes tápról még "sokáig" működik az arduinó annak ellenére , hogy a teljesítmény áramkörirészben már a főpuffer is kisült.
Persze idővel a kiszáradó elektrolit kondenzátor ezt a "eepromba másolási időt" csökkentheti/ronthatja , igaz ekkor azt a kondit már ki kell dobni mert nem tud stabil eepromba írási ideig(adatlap megmondja pár 10msec) se tartani max 10-20 mA fogyasztást 10-12 V feszültségen.
Persze lehetne még ezt finomítani ... tápfesz elmenések vissza jövések rángatások elleni védelem figyelése ... stb.
Valószínűleg a "segéd ardu puffer kondenzátora" ezt a "hosszú kisterheltségű" kisülési idejével jól kompenzálja.
A hozzászólás módosítva: Ápr 12, 2016
(#) szili83 hozzászólása Ápr 12, 2016 1 /
 
Sziasztok! Vettem egy DS3231 óramodult, mert egy üzemóra számlálót szeretnék építeni. De nem tudom, hogyan fogjak hozzá. Valaki tud segíteni? A mintapéldákból nem jöttem rá. Szájbarágósan ha segítene valaki, vagy ha privátban, azt nagyon megköszönném.

Bocs, kezdő vagyok arduinoból.
(#) Medve válasza szili83 hozzászólására (») Ápr 13, 2016 / 1
 
Van egy jó könyv erre: Harsanyi_Reka_Juhasz_Marton_Andras--Fizikai_szamitastechnika__elektronikai_alapok_es_Arduino_programozas_.pdf
Ingyenes, töltsd le. (Jó pontos üzemóra számláló lesz! )
A hozzászólás módosítva: Ápr 13, 2016
(#) Bakman válasza szili83 hozzászólására (») Ápr 13, 2016 / 1
 
Van egy kimenete, ami beprogramozható úgy, hogy 1 Hz-es órajelet adjon. Ezt a jelet figyeled és ha pl. a jel lefutásakor a gép üzemel, aminek az üzemóráját akarod mérni, az időhöz hozzáadsz egy másodpercet. A többi már csak körítés.
(#) szili83 válasza Medve hozzászólására (») Ápr 13, 2016 /
 
Köszönöm megnézem, de nekem is meg van a könyv, de sajnos nem találtam rá megoldást benne. Lehet én nem értek az arduinohoz eléggé.

Amúgy más funkciói is lesznek, ez csak az egyik. A többi funkció már készen van amúgy.
(#) tomat5 hozzászólása Ápr 14, 2016 /
 
Sziasztok!

Adott 3 Arduino NANO. Az egyik FTDI chipes a másik kettő CH340g vel érkezett. Az FTDI-s NANO-ra feltöltöm a sketch-t és kifogástalanul működik, a másik kettőre ugyanazt feltöltve nem. A sketch elég bonyolult és hosszú, de a megszakításból villogtatott led mindhármon működik. A W5100 -as ethernet shield csak az FTDI chipes verzión működik, a másik kettőn nem.

Ötlet valakinek?
Köszönöm.
(#) Kovidivi válasza tomat5 hozzászólására (») Ápr 14, 2016 /
 
Más a lábkiosztása a két nano-nak. Hogy valamelyik FTDI csipes, a másik pedig CH340-es, nem befolyásolja a programot, mert azok csak a feltöltésben vesznek részt. Esetleg ha használod az RX TX lábakat is, az okozhat gondot nem megfelelő illesztés esetén.
Következő: »»   211 / 845
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem