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   734 / 838
(#) pittyu2 válasza Jonni hozzászólására (») Ápr 3, 2022 /
 
Köszi, nagy segítség volt. Már elfelejtettem hogy csináltam régen.
De ez elég macerás -átírni az időt- beírni- átkommentelni-újra beírni.
Ráadásul én ezt az órát 2 euróért eladtam a kereszt lányomnak, aki vinni akarja Írországba.
A szerzőnek, _aki ezt az órát kiagyalta és közzétette_írtam hogy jobb lenne vagy nyomógombbal, vagy éppen DCF77 el vagy jobb RTC-vel pontosítani- de nem reagált rá.
Mégegyszer köszi.
(#) Jonni válasza pittyu2 hozzászólására (») Ápr 4, 2022 /
 
Nagyon szívesen. Az RTC-vel kapcsolatba nem tudom melyik tipust használod de nekem van DS3231-ből 3 darab is és aránylag pontosak (persze nem atomóra).
(#) pittyu2 válasza Jonni hozzászólására (») Ápr 4, 2022 /
 
DS1302 az eredeti leírás, azzal van megépítve. A 3231 ből nekem is van pár darab amit "infinity clock "ba van beépítve, és tényleg elég pontos.
Egészen más : Találtam egy másik óra programot amiben Wifi kapcsolattal állítja az időt. Ha átalakítom az egész órát és beírom az ottani wifi azonosítót és jelszót --működhet Írországban ??
(#) Jonni válasza pittyu2 hozzászólására (») Ápr 4, 2022 /
 
Müködhet az Írországban is. Bár itt halkan jegyzem meg ,hogy én nem vagyok az interneten elérhető idő híve. A pontosságával nincs baj csak ha a készüléket valami leárnyékolja és nem kap jelet vagy valami más okból nincs internet akkor jó volna ha az óra még tovább járna , még ha pontatlanúl is. Azaz én a gombbal beállítható digitális órák híve vagyok de kinek mi a jó azt használja. Főleg ha az óra nem is a tied jó volna ha az új gazdája is be tudná állítani kézzel (mindenféle programozói és müszaki tudás nélkűl).
A hozzászólás módosítva: Ápr 4, 2022
(#) Jonni válasza Jonni hozzászólására (») Ápr 4, 2022 /
 
Mondjuk én a bináris órákat nem ismerem...
(#) pittyu2 válasza Jonni hozzászólására (») Ápr 4, 2022 /
 
Idézet:
„Azaz én a gombbal beállítható digitális órák híve vagyok de kinek mi a jó azt használja. Főleg ha az óra nem is a tied jó volna ha az új gazdája is be tudná állítani kézzel (mindenféle programozói és müszaki tudás nélkűl).”

Jó lenne ha ezt meg tudnám csinálni !!!!
A hozzászólás módosítva: Ápr 5, 2022
Moderátor által szerkesztve
(#) Josi777 válasza meddu hozzászólására (») Ápr 5, 2022 /
 
Ami neked jó lehet, az a fix. időalap használata, pl. 1 másodpercenként meghívsz egy függvényt. Ezt a millis() függvénnyel teszed. Ha a vizsgálatot jól írod meg, akkor a túlcsordulás nem okoz gondot. Így már képes vagy bármilyen időtartamú időzítést beállítani, úgy, hogy mellette bármi más történhet. És mivel a visszaszámlálás idejének nem kell pontosnak lennie, ezért úgy is meg lehet oldani, hogy csak akkor történjen, ha a szivattyú ki van kapcsolva.
(#) Josi777 válasza pittyu2 hozzászólására (») Ápr 5, 2022 /
 
Hol található a kód?
(#) pittyu2 válasza Josi777 hozzászólására (») Ápr 5, 2022 /
 
Bővebben: LinkBővebben: Link
Bővebben: Link
binary clock arduino and ws2812
A hozzászólás módosítva: Ápr 5, 2022
(#) Josi777 válasza pittyu2 hozzászólására (») Ápr 6, 2022 / 2
 
Miután egy meglévő időpontot kell módosítani és nem újra beállítani, ezért célszerűbb egy offset lehetőséget beletenni, így egy plusz és egy mínusz gombbal egyszerűen megoldható a feladat. Szükséges lesz egy kevéske kiegészítést elhelyezni a programkódban. A terjedelem miatt nem írnám le a működését. Kezdjük az új változók deklarálásával. Ezeket a sorokat helyezd a programkód elejére:
  1. #define buttonPlus A0
  2. #define buttonMinus A1
  3.  
  4. unsigned long debounceDelay=50;
  5. unsigned long repeatDelay=400;
  6. signed long dynamic=10;
  7. unsigned long lastDebounceTime1=0, lastDebounceTime2=0;
  8. signed long repeatDelayDynamic1=400,repeatDelayDynamic2=400;
  9. bool readingButton1, readingButton2;
  10. bool buttonShort1=false, buttonShort2=false;
  11. bool buttonLong1=false, buttonLong2=false;

A 2 gomb itt az A0 és az A1-es kivezetésekhez és a GND-hez csatlakozik.
A setup()-ba ez a 2 sor kerüljön még:
  1. pinMode(buttonPlus, INPUT_PULLUP);
  2.   pinMode(buttonMinus, INPUT_PULLUP);

A következő kódot a loop elejére illeszd be:
  1. buttonCheck1();
  2.   buttonCheck2();
  3.   if (buttonShort1==true and readingButton1==HIGH){
  4.     buttonShort1=false;
  5.     timePlus();
  6.   }
  7.   if (buttonLong1==true){
  8.     buttonLong1=false;
  9.     timePlus();
  10.   }
  11.  
  12.   if (buttonShort2==true and readingButton2==HIGH){
  13.     buttonShort2=false;
  14.     timeMinus();
  15.   }
  16.   if (buttonLong2==true){
  17.     buttonLong2=false;
  18.     timeMinus();
  19.   }

Majd ezt a 4 függvényt valahova szúrd be, mondjuk a program végére:
  1. void buttonCheck1() {
  2.   readingButton1 = digitalRead(buttonPlus);
  3.   if (readingButton1==LOW){
  4.     if ((millis() - lastDebounceTime1) > debounceDelay) {
  5.       buttonShort1=true;
  6.     }
  7.     if (millis()-lastDebounceTime1>repeatDelayDynamic1) {
  8.       lastDebounceTime1=millis();
  9.       buttonLong1=true;
  10.       buttonShort1=false;
  11.       repeatDelayDynamic1=repeatDelayDynamic1-dynamic;
  12.       if (repeatDelayDynamic1<10) repeatDelayDynamic1=10;
  13.     }
  14.   }
  15.   if (readingButton1==HIGH) {
  16.     lastDebounceTime1=millis();
  17.     repeatDelayDynamic1=repeatDelay;
  18.   }
  19. }
  20.  
  21. void buttonCheck2() {
  22.   readingButton2 = digitalRead(buttonMinus);
  23.   if (readingButton2==LOW){
  24.     if ((millis() - lastDebounceTime2) > debounceDelay) {
  25.       buttonShort2=true;
  26.     }
  27.   }
  28.     if (millis()-lastDebounceTime2>repeatDelayDynamic2) {
  29.       lastDebounceTime2=millis();
  30.       buttonLong2=true;
  31.       buttonShort2=false;
  32.       repeatDelayDynamic2=repeatDelayDynamic2-dynamic;
  33.       if (repeatDelayDynamic2<10) repeatDelayDynamic2=10;
  34.     }
  35.   if (readingButton2==HIGH) {
  36.     lastDebounceTime2=millis();
  37.     repeatDelayDynamic2=repeatDelay;
  38.   }
  39. }
  40.  
  41. void timePlus(){
  42.   secs++;
  43.   if (secs==60){
  44.     secs=0;
  45.     mins++;
  46.     if (mins==60){
  47.       mins=0;
  48.       hrs++;
  49.       if (hrs==24) hrs=0;
  50.     }
  51.   }
  52.   myRTC.setDS1302Time(secs, mins, hrs, 7, 27, 3, 2016);
  53. }
  54.  
  55. void timeMinus(){
  56.   secs--;
  57.   if (secs==-1){
  58.     secs=59;
  59.     mins--;
  60.     if (mins==-1){
  61.       mins=59;
  62.       hrs--;
  63.       if (hrs==-1) hrs=23;
  64.     }
  65.   }
  66.   myRTC.setDS1302Time(secs, mins, hrs, 7, 27, 3, 2016);
  67. }

A gombok rövid megnyomásaira 1-1 értékkel nő vagy csökken a másodperc értéke, nyomva tartásával viszont ismétlődik az érték változása. Ez a változás dinamikus, azaz minél tovább van nyomva tartva a gomb, annál gyorsabban történik az ismétlődés.
Az új kód külön tesztelve működik, remélem, a programodba való illesztéssel is jó lesz.
Sok sikert
(#) Moderátor hozzászólása Lac364 hozzászólására (») Ápr 7, 2022
 
Felhasználói kérésre törölve.
(#) villantl hozzászólása Ápr 7, 2022 /
 
Sziasztok,
Van valakinek tapasztalata NRF24L01-es kommunikációval?
Átolvastam rengeteg leírást, azt gondolom, hogy értem, de mégsem működik a teszt program.
Mi lehet a hiba? Illetve hogy lehetne kideríteni, hol a probléma?
Adó:
  1. #include <SPI.h>
  2. #include <nRF24L01.h>
  3. #include <RF24.h>
  4. RF24 radio(9, 10); // CE, CSN        
  5. const byte address[6] = "00009";
  6. void setup() {
  7.   radio.begin();
  8.   Serial.begin(9600);    
  9.   radio.openWritingPipe(address);
  10.   radio.setPALevel(RF24_PA_MIN);
  11. }
  12. void loop() {
  13.   radio.stopListening();
  14.   const char text[] = "Your Button State is HIGH";
  15.   radio.write(&text, sizeof(text));                
  16.   Serial.println(text);
  17.   delay(20);
  18. }

Vevő:
  1. #include <SPI.h>
  2. #include <nRF24L01.h>
  3. #include <RF24.h>
  4. RF24 radio(9, 10); // CE, CSN        
  5. const byte address[6] = "00009";
  6. void setup() {
  7.   Serial.begin(9600);
  8.   radio.begin();  
  9.   radio.openReadingPipe(1, address);  
  10.   //radio.setPALevel(RF24_PA_MIN);
  11. }
  12. void loop() {
  13.   radio.startListening();
  14.   if (radio.available())            
  15.   {
  16.     while (radio.available())
  17.     {
  18.     char text[32] = "";                
  19.     radio.read(&text, sizeof(text));  
  20.     }
  21.   }else
  22.   {
  23.   Serial.println("Not Receiving !!!");
  24.   }
  25. }

Köszönöm a segítséget!
(#) Lac364 válasza villantl hozzászólására (») Ápr 7, 2022 /
 
Tudom , hogy ez nem segítség , de talán...

Bővebben: Link
(#) sargarigo válasza villantl hozzászólására (») Ápr 8, 2022 /
 
Van több féle is ezekből, a bogyós csepp alakú nekem sem működik. Ami meg rendesen felületszerelt az meg igen. Lehet hogy nálad is ez a baj?
(#) villantl válasza sargarigo hozzászólására (») Ápr 8, 2022 /
 
Ez a HESTOR-on is kapaható felületszerelt nRF24L01 modul nyák antennával 2.4GHz.
nRF24L01
(#) sargarigo válasza villantl hozzászólására (») Ápr 8, 2022 /
 
Akkor nem tudom, csak egy ötlet volt.
(#) sargarigo válasza sargarigo hozzászólására (») Ápr 8, 2022 /
 
Adó:
  1. #include <SPI.h>
  2. #include "RF24.h"
  3.  
  4. RF24 radio(9, 10); // CE, CSN
  5. const byte address[6] = "00001";
  6. char transmitData[32] = "";
  7. String dataString;
  8.  
  9. void setup()
  10. {
  11.   Serial.begin(115200);
  12.   radio.begin();
  13.   //  radio.setPALevel(RF24_PA_MAX);           // If you want to save power use "RF24_PA_MIN" but keep in mind that reduces the module's range
  14.   radio.openWritingPipe(address);
  15.   radio.stopListening();
  16. }
  17.  
  18.  
  19. void loop()
  20. {
  21.  
  22.  
  23.   dataString = { ... }
  24.  
  25.   dataString.toCharArray(transmitData, 10);
  26.   radio.write(&transmitData, sizeof(transmitData));
  27.   delay(20);
  28.   Serial.println(transmitData);
  29. }


Vevő:
  1. /* Transceiver pinouts
  2.     1 - GND
  3.     2 - 3.3V
  4.     3 - CE
  5.     4 - CSN
  6.     5 - SCK
  7.     6 - MOSI
  8.     7 - MISO
  9.     8 - IRQ
  10.  
  11.  
  12. // 10 csn
  13. // 9 ce
  14. // 13 sck
  15. // 11 mosi
  16. // 12 miso
  17.  
  18. //Include Libraries
  19. #include <SPI.h>
  20. #include <nRF24L01.h>
  21. #include <RF24.h>
  22. #include "motors.h"
  23. #include <Servo.h>
  24.  
  25. char text[32] = {0};
  26.  
  27. unsigned long started_waiting_at;
  28.  
  29. //create an RF24 object
  30. RF24 radio(9, 10);  // CE, CSN
  31. Servo servo;
  32.  
  33. //address through which two modules communicate.
  34. const byte address[6] = "00001";
  35.  
  36. void setup()
  37. {
  38.   DDRB = 0;
  39.   DDRC = 0;
  40.   DDRD = 0;
  41.  
  42.   while (!Serial);
  43.   Serial.begin(115200);
  44.   Serial.println("--------------------------------");
  45.  
  46.   radio.begin();
  47.   radio.openReadingPipe(0, address);
  48.   radio.startListening();
  49. }
  50.  
  51. void loop()
  52. {
  53.   started_waiting_at = micros();
  54.  
  55.   while (!radio.available())
  56.   {
  57.     if (micros() - started_waiting_at > 200000)
  58.     {
  59.       Serial.println(F("Failed, response timed out"));
  60.      { ... }
  61.       delay(1000);
  62.       break;
  63.     }
  64.   }
  65.  
  66.  
  67.   if (radio.available())
  68.   {
  69.     radio.read(&text, sizeof(text));
  70.     String Text(text);  // char[] -> String
  71. { ... }
  72.   }
  73.  
  74. }


Nem mintakód, élő programból kivágtam a nem releváns részeket. Hasonlítsd össze, hátha feltűnik valami (reméljük)!
(#) Frankye hozzászólása Ápr 11, 2022 /
 
Felvetődött egy érdekes kérdés, aminek megoldásában szeretném a hozzáértők segítségét kérni.
A megoldandó feladat az, hogy multitasking módban több LED-et villogtassunk, de oly módon, mint hogy pl. egy rendőr/mentő/tűzoltó autó fényhídja. Pontosan a feladat, hogy 2-3 rövid villanás legyen, gyors egymásutánban, majd pedig egy kicsit hosszabb szünet.
A millis lenne a jó hozzá, ám amit eddig a témában találtam, azok egyes felvillanások voltak.
A megoldandó feladat az volna, hogy minden egyes villas után nullázódjon a számolás, hanem csak a 2 (3) villanás után.
Mi lehet a megoldás erre?
(#) Massawa válasza Frankye hozzászólására (») Ápr 11, 2022 /
 
Ugy nevezett state machine-t kell irnod ( nem tudom mi a magyar megfelelöje ).
Szoval az egyes állapotokat/ütemeket külön-külön megirod ( melyik LED mikor villanjon) majd ezeket a loopbol a millis idözitövel behivod. A loop folyton körbe megy és akár egy szünet is lehet az állapot.

Rengeteg példa van a neten, keresgélj a youtubon is.
(#) Kera_Will válasza Massawa hozzászólására (») Ápr 11, 2022 /
 
Tükörben fordítva állapot gép.
Ugyan így nevezik itthoni szakirodalomban is vagy állapot alapú modellezés
A hozzászólás módosítva: Ápr 11, 2022
(#) Massawa válasza Kera_Will hozzászólására (») Ápr 11, 2022 /
 
Kösz annyira nem figyelem a magyar szakirodalmat.
(#) Frankye válasza Massawa hozzászólására (») Ápr 11, 2022 /
 
Köszönöm, közben én is keresgéltem, visszaolvastam, és megtaláltam sargarigo megoldását rá.
A hozzászólás módosítva: Ápr 11, 2022
(#) forma3 hozzászólása Ápr 12, 2022 /
 
Sziasztok!
Pár éve elhasználtam a (feltehetőleg klón) Arduino Uno R3 lapomból az atmegát, és nemrég lett kedvem megint foglalkozni vele. Tettem bele egy új üres IC, és nagyobb nehézségek árán, de egy P3 gép párhuzamos portjáról sikerült bootloadert égetnem bele, amit 1.8.18-as verzióval tettem meg. A rendes gépemen 1.8.19 fut, viszont nem tudja Uno-ként programozni, mivel avrdude stk500_recv() programmer is not responding hibaüzenetet ad. Arduino Nano-ra állítva viszont feljön a portoknál egy old bootloader opció is, amivel már működik. Két kérdésem lenne:

- Miért lehet ez, amivel feltettem a bootloadert csak 1 al-al verzióval volt régebbi
- Származik-e gondom, hátrányom abból, ha így, Nano-ként programzom?
A hozzászólás módosítva: Ápr 12, 2022
(#) vargham válasza forma3 hozzászólására (») Ápr 13, 2022 /
 
Sok-sok éve új bootloader van. Kb az Arduino 1.0 óta. Szóval nem tudom, hogy került rá a régi.
Teljesen ugyanúgy működik, csak fele sebességgel.
(#) Massawa válasza vargham hozzászólására (») Ápr 13, 2022 /
 
Ezt én sem tudom, de az ujjonnan vett Nanok, szinte kivétel nélkül a régi bootloadert használják. Én is csodálkoztam, mert több forrásból került hozzám vagy 2 tucat NANO és eddig mindegyik ( még mindet nem probáltam) a régit kérte.
(#) Skori válasza vargham hozzászólására (») Ápr 13, 2022 /
 
Vettem pár darab nanót, és azokon is régi bootloader van. Érdemes lecserélni az újabbra, vagy lehet valamilyen oka annak, hogy a régit rakták fel rá? A sebességen kivűl miben jobb az újabb boot loader? Pl. flash helyfoglalás vagy más egyéb? A loader feltöltéséhez kell programozó, vagy saját magát is felül tudja írni a régi az újjal?
(#) vargham válasza Skori hozzászólására (») Ápr 13, 2022 /
 
Nem tudja magát frissíteni, programozó kell hozzá. Ha van kettő belőlük, akkor az egyik rögtön lehet is programozó.
Ha jól emlékszem, akkor kisebb is az újabb, cserébe hiányzik belőle néhány ritkán használt funkció.
(#) tbarath hozzászólása Ápr 13, 2022 /
 
Elég érdekes kis project, kijelző használata skálaként rotary encoderhez: Bővebben: Link
(#) Kovidivi válasza Skori hozzászólására (») Ápr 14, 2022 /
 
Ha jól tudom, a régi induláskor vár pár mp-et, és csak utána indul a programod, az új bootloader pedig alig észrevehető ideig várakozik csak, tehát a program indulás majdnem azonnali.
(#) majkimester válasza tbarath hozzászólására (») Ápr 14, 2022 / 3
 
Érdekes project, de én ezt a WOKWI szimulátort eddig nem ismertem, nagyon jópofa:
Knob over OLED Display WOKWI project
Következő: »»   734 / 838
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.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