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   559 / 854
(#) Kari55 válasza Bakman hozzászólására (») Okt 22, 2019 /
 
Most visszacseréltem az újabb elemet, és elfelejtett mindent.
Ki fogom cserélni az egész rtc modult, csak ki kell várni míg megjön.
Köszönöm a segítségeket.
(#) Bakman válasza Kari55 hozzászólására (») Okt 22, 2019 /
 
Ha a program állítja át a bitet, akkor a modul kicserélése nem fog segíteni. A pontatlanságon remélhetőleg igen.
(#) Kari55 válasza Bakman hozzászólására (») Okt 22, 2019 /
 
Ha ide teszem a programot, vagy a linkjét átnéznéd?
A hozzászólás módosítva: Okt 22, 2019
(#) Bakman válasza Kari55 hozzászólására (») Okt 22, 2019 /
 
Nem ismerem az Arduino-t, csak hírből. Viszont, a link jöhet, hátha más észreveszi benne a hibát.
(#) Tasznka válasza Bakman hozzászólására (») Okt 22, 2019 /
 
Igen,szerintem is,azért is írtam a ritkát..Rtc-k 20-100ppm-es külső kaviccsal tudnak ám időt mérni...azokat lehetett jó pár mp-el beállítani erre-arra,gondoltam itt is megy valamennyire.
De lehetséges,hogy valami hamisítvány,akkor nem csodálkoznék.
(#) Kari55 válasza Bakman hozzászólására (») Okt 22, 2019 /
 
Ok köszi.
Íme:
(#) Kovidivi válasza Tasznka hozzászólására (») Okt 22, 2019 /
 
Első körben az IC-t kellene tesztelni, egy alap programmal, semmi extra. Szerintem a programban van a hiba, eddig sosem panaszkodott senki. Pl. ha a programodban van ébresztő állítás, ami módosítja véletlenül az időt is (esetleg stoppolja az órajelet), vagy időközönként felfrissíted az IC-ben tárolt időt, az hibát okoz. Esetlef az IC panaszkodik, hogy a BAT lábára túl kevés feszültség jut, a tápja instabil, stb. Ha hamis lenne, már mindenhol ezt olvasnánk, itt is az lenne az első hozzászólás, hogy ja, nekem se volt pontos, ne használd. Mint bizonyos páratartalom mérő szenzoroknál is volt gyári hibás, nem kevés, de arról szerintem többen tudnak.
Pl. én a legolcsóbb órakvarccal is nagyobb pontosságot értem el, főleg, mikor beleprogramoztam egy kalibrálást, ami x naponta y mp-nyivel korrigálja a számolt időt.
A hozzászólás módosítva: Okt 22, 2019
(#) Tasznka válasza Kari55 hozzászólására (») Okt 22, 2019 /
 
Én nem nagyon látom benne,hogy a control,control/status -t nézné-e,vagy írná...ha a defaultot nézzük akkor nem teszi 1-be a bitet,így elemről kellene továbbmennie.
Bár én nem így használnám az rtc-t.
(#) Tasznka válasza Kovidivi hozzászólására (») Okt 22, 2019 /
 
Igen otthonra el lehet játszani a kalibrálással,de én általában elég sok mennyiséggel számolok,ott kiesik ez a lehetőség.
Amúgy a fórumon írják,hogy jött már 1-2db,ami nem is ment,vagy problémás volt,csere után ment minden.
És csak 1 költői jellegű kérdés: miért van az,hogy ha csak az Ic-t venném,akkor 2-3-szor drágább,mintha a paneles verziót?
(#) kapu48 válasza Kari55 hozzászólására (») Okt 23, 2019 /
 
Nem adsz kezdőértéket a változódnak?
135. sor:
  1. //SYSTEM STATE
  2. byte systemState;       //0 = show time/date/temp, other = menu
  3. ...
  4. Ezt az ismeretlen kezdőértékű változót vizsgálod aztán a 402. sortól:
  5. switch (systemState) {
  6. ...
  7. 957. sorban simán felülírod az időt, ha véletlenül 17 az értéke:
  8.         case 17:
  9.                 //menu 17
  10.                 //EXIT
  11.                 if (edgeButton1) {
  12.                         //rising edge detected
  13.                         Ide kellene beszúrni egy ellenőrző kérdést, hogy tényleg akarod a felülírást?
  14.                        
  15.                         SetRtc(0, minute, hour, dayOfWeek, dayOfMonth, month, year);    //set time and zero second
  16.                         ...

Bár csak gyorsan átfutottam a programot de,
Így szerintem simán felülírható az RTC véletlenül!
(#) Kari55 válasza kapu48 hozzászólására (») Okt 23, 2019 /
 
Köszi,
de nem értek, a programozáshoz "kicsit!" balga vagyok.
A hozzászólás módosítva: Okt 23, 2019
(#) sargarigo válasza GPeti1977 hozzászólására (») Okt 23, 2019 /
 
Esetleg tudnál egy megbízható forrást ajánlani? Kb 6 darab kellene játékba, de nem akarok vagyonokat rákölteni.
(#) Kovidivi válasza Tasznka hozzászólására (») Okt 23, 2019 /
 
Gondolom az egyikre van kereslet, a másikra nincs.Ugyanaz, mint Atmega8 vs. Attinyxx. Az Atmega8 sokkal többet tud, a darabár mégis annyi, mint a sokkal butább és kisebb Attinyxx-é.
(#) vargham válasza Kovidivi hozzászólására (») Okt 23, 2019 /
 
Ahogy én tudom, egy IC gyártási költéségnek zömét a tokozás és a lábak adják, és csak kisebb részben a bonyolultsága...
(#) GPeti1977 válasza sargarigo hozzászólására (») Okt 23, 2019 /
 
Innen még nem vettem de az árak reálisak.
NKON
Illetve modellezéshez innen érdemes akkut választani:
Hobbyking
(#) sargarigo válasza GPeti1977 hozzászólására (») Okt 23, 2019 /
 
Nagyon köszönöm, megnézem!
(#) Tetye hozzászólása Okt 23, 2019 /
 
Sziasztok!
Szeretnék egy kis segítséget kérni mert már a hajam kihullik. Tuti valamit csak nem veszek észre de már majdnem 1 hónapja szenvedek egy egyszerűnek tűnő dologgal.
Leírom röviden miről szól a dolog, tettem a fürdőmbe 8db kb 130db-os ledszalagot, ezek 5Vról mennek nagyon tuti és minden led a szalagon külön címezhető, színezhető. Gondolom eddig sokan ismeritek a dolgot. Na most 1db arduino nano édes kevés lenne hogy a 8 szalagot kezelje így azt csináltam hogy mindegyik szalag kapott egy M328-at arduino FW-el. Ezek össze vannak kötve megfelelő illesztéssel soros porton, mind a 8an figyelik az Rx lábat hogy mi folyik rajta. Ha megszólítom őket akkor a kapott adatok alapján beállítják a ledek színét.
pl.:
  1. ID:6&LED:6&COLOR1:255&COLOR2:0&COLOR3:0&BR:155

Ezzel a 6. szalag 6. ledjét kellene RGB alapján(255,0,0) pirosra állítani 155 a fényerő.
Eddig rendben is lenne. Csak sajnos a megák(unok) nem hallgatnak a nevükre.
Szinte mindig megcsinálja mindenki amit mondok bárkinek, nagy az összetartás.. .
A vezérlését egy ESP8266 végezné majd.. etherneten vagy RS485 ön, de az még odébb van.
Jelenleg csak kiszórja a soros portra az infót nekik. Csatoltam a teljes UNO kódot és az ESP nek csak az ide vonatkozó részét mert hosszú és szörnyű.
Valaki tudna segíteni hogy hol lehet a gond?
  1. #include <Arduino.h>
  2. #include "FastLED.h"
  3.  
  4. #define BRIGHTNESS  100
  5. #define NUM_LEDS 253
  6. #define DATA_PIN 7
  7. #define INPUT_SIZE 80
  8.  
  9. #define myid 8  // ID
  10.  
  11. byte lV; //led number
  12. byte c1V; //color1 value RED
  13. byte c2V;  //color2 value GREEN
  14. byte c3V;  //color3 value BLUE
  15. byte bV;  //Brightness value
  16.  
  17. CRGB leds[NUM_LEDS];
  18.  
  19. void setup() {
  20.   Serial.begin(115200); // opens serial port, sets data rate to 9600 bps
  21.   FastLED.addLeds<WS2812, DATA_PIN, GRB>(leds, NUM_LEDS );  
  22. }
  23.  
  24. void loop() {
  25. //ID:1&LED:1&COLOR1:RED&COLOR2:GREEN&COLOR3:BLUE&BR:89
  26. //ID:0&LED:2&COLOR1:51&COLOR2:133&COLOR3:144&BR:155
  27.  
  28. char input[INPUT_SIZE + 1];
  29. byte size = Serial.readBytes(input, INPUT_SIZE);
  30. input[size] = 0;
  31.       char* command = strtok(input, "&");
  32. while (command != 0)
  33. {
  34.   char* separator = strchr(command, ':');
  35.     if (separator != 0)
  36.     {
  37.         *separator = 0;
  38.         ++separator;
  39.         int value = atoi(separator);
  40.         if(strcmp(command, "ID") == 0){
  41.           if (value == myid || value == 0){
  42.           }else{  
  43.           command = 0;
  44.         c1V = 0;
  45.         c2V = 0;
  46.         c3V = 0;
  47.         bV = 0;
  48.         lV = 0;
  49.           break;
  50.           }
  51.         }else if(strcmp(command, "LED") == 0){
  52.           lV = value;
  53.         }else if(strcmp(command, "COLOR1") == 0){
  54.           c1V = value;
  55.         }else if(strcmp(command, "COLOR2") == 0){
  56.           c2V = value;
  57.         }else if(strcmp(command, "COLOR3") == 0){
  58.           c3V = value;
  59.         }else if(strcmp(command, "BR") == 0){
  60.           bV= value;
  61.         }
  62.         leds[lV] = CRGB(c1V, c2V, c3V);
  63.         FastLED.setBrightness(bV);
  64.         FastLED.show();
  65.     }
  66.     command = strtok(0, "&");
  67. }
  68. }


És az ESP:
  1. swSer.println("ID:1&LED:1&COLOR1:0&COLOR2:255&COLOR3:0&BR:55");
  2.     delay(50);
  3.     swSer.println("ID:2&LED:2&COLOR1:255&COLOR2:0&COLOR3:0&BR:155");
  4.     delay(50);
  5.     swSer.println("ID:3&LED:3&COLOR1:255&COLOR2:0&COLOR3:0&BR:155");
  6.     delay(50);
  7.     swSer.println("ID:4&LED:4&COLOR1:255&COLOR2:0&COLOR3:0&BR:155");
  8.     delay(50);
  9.     swSer.println("ID:5&LED:5&COLOR1:255&COLOR2:0&COLOR3:0&BR:155");
  10.     delay(50);
  11.     swSer.println("ID:6&LED:6&COLOR1:255&COLOR2:0&COLOR3:0&BR:155");
  12.     delay(50);
  13.     swSer.println("ID:7&LED:0&COLOR1:255&COLOR2:0&COLOR3:0&BR:155");
  14.         delay(50);
  15.     swSer.println("ID:8&LED:1&COLOR1:255&COLOR2:230&COLOR3:230&BR:45");
(#) kapu48 válasza Tetye hozzászólására (») Okt 23, 2019 / 1
 
Az a gondod, hogy mindig 80 karaktert akarsz beolvasni:
  1. #define INPUT_SIZE 80
  2. Serial.readBytes(input, INPUT_SIZE);

Hol ott az a tömböd mérete, nem pedig az elküldött üzenetek hossza!

Ahogy a példádból látszik, nem is mindig egyforma hosszú üzeneteket küldesz.

Ezért nem az üzenet hosszát kellene figyelned, hanem a végén levő return karaktert.
Pl.:
  1. String my_name;
  2.  
  3. void setup() {
  4.     Serial.begin(9600);
  5.  
  6.     delay(2000);
  7.  
  8.     Serial.println("What is your name?");
  9. }
  10.  
  11. void loop() {
  12.     if(Serial.available()){
  13.         my_name = Serial.readStringUntil('\n');
  14.  
  15.         Serial.println(my_name );
  16.     }
  17. }
(#) djusee válasza Tetye hozzászólására (») Okt 24, 2019 / 1
 
Amit kapu48 mondott és a 30. sorban a
  1. input[size] = 0;
gondolom a karakterlánc végére a NULL karakter lenne, próbáld inkább így
  1. input[size] = '\0';
(#) Tetye válasza kapu48 hozzászólására (») Okt 24, 2019 /
 
Megpróbáltam az általad javasolt minta lapján át írni, de nem fordul le mert a "Serial.readStringUntil('\n');" nem tudja char* ba beolvasni.
A stringel pedig a strtok fut hibára.



  1. #include <Arduino.h>
  2. #include "FastLED.h"
  3.  
  4. #define BRIGHTNESS  100
  5. #define NUM_LEDS 253
  6. #define DATA_PIN 7
  7. #define INPUT_SIZE 80
  8.  
  9. #define myid 1  // ID
  10.  
  11. //String data;
  12. char* data;  
  13.  
  14. byte lV; //led number
  15. byte c1V; //color1 value RED
  16. byte c2V;  //color2 value GREEN
  17. byte c3V;  //color3 value BLUE
  18. byte bV;  //Brightness value
  19.  
  20. CRGB leds[NUM_LEDS];
  21.  
  22. void setup() {
  23.   Serial.begin(115200); // opens serial port, sets data rate to 9600 bps
  24.   FastLED.addLeds<WS2812, DATA_PIN, GRB>(leds, NUM_LEDS );  
  25. }
  26.  
  27. void loop() {
  28. //ID:1&LED:1&COLOR1:RED&COLOR2:GREEN&COLOR3:BLUE&BR:89
  29. //ID:0&LED:2&COLOR1:51&COLOR2:133&COLOR3:144&BR:155
  30.     if(Serial.available()){
  31.         data = Serial.readStringUntil('\n');   //cannot convert 'String' to 'char*' in assignment
  32.         char* command = strtok(data, "&");     //cannot convert 'String' to 'char*' for argument '1' to 'char* strtok(char*, const char*)'
  33.        //String command = strtok(data, "&");   //cannot convert 'String' to 'char*' for argument '1' to 'char* strtok(char*, const char*)'
  34.        
  35.         while (command != 0)
  36.         {
  37.           char* separator = strchr(command, ':');
  38.           if (separator != 0)
  39.           {
  40.             *separator = 0;
  41.             ++separator;
  42.             int value = atoi(separator);
  43.             if(strcmp(command, "ID") == 0){
  44.             if (value == myid || value == 0){
  45.             }else{  
  46.               command = 0;
  47.               c1V = 0;
  48.               c2V = 0;
  49.               c3V = 0;
  50.               bV = 0;
  51.               lV = 0;
  52.               break;
  53.             }
  54.            }else if(strcmp(command, "LED") == 0){
  55.             lV = value;
  56.            }else if(strcmp(command, "COLOR1") == 0){
  57.             c1V = value;
  58.            }else if(strcmp(command, "COLOR2") == 0){
  59.             c2V = value;
  60.            }else if(strcmp(command, "COLOR3") == 0){
  61.             c3V = value;
  62.            }else if(strcmp(command, "BR") == 0){
  63.             bV= value;
  64.            }
  65.           leds[lV] = CRGB(c1V, c2V, c3V);
  66.           FastLED.setBrightness(bV);
  67.           FastLED.show();
  68.          }
  69.          command = strtok(0, "&");
  70.         }
  71.     }
  72. }
(#) Tetye válasza djusee hozzászólására (») Okt 24, 2019 /
 
Elvileg ez a rész kikerül belőle kapu48 változtatásával.
(#) djusee válasza Tetye hozzászólására (») Okt 24, 2019 / 1
 
Próbáld ezt .
  1. Serial.readBytesUntil('\n', input, INPUT_SIZE);

Persze, nem próbáltam
(#) djusee hozzászólása Okt 24, 2019 / 1
 
Kíváncsi leszek hogy használhatóbb e lessz és IDE nek e lehet majd nevezni az uj Arduino PRO IDE -t . Egyenlöre még nem tervezem a váltást Sloeber -röl de jó hír hogy fejlesztenek
(#) Tetye válasza djusee hozzászólására (») Okt 24, 2019 /
 
Sajnos így sem jó.
(#) pipi válasza Tetye hozzászólására (») Okt 24, 2019 /
 
Jónak kell lennie
Bővebben: Link
(#) djusee válasza Tetye hozzászólására (») Okt 24, 2019 / 1
 
Akkor debuggolni kellene, megnézni hogy sikeres e a tokenokra bontás, az if feltételek teljesülnek e. Ha idöközben nem sikerülne rájönni gondolom hogy az éjjel lessz egy kis idöm, ránézek
(#) djusee válasza Tetye hozzászólására (») Okt 24, 2019 / 1
 
A 41. ik sorban ha a ö kap utasítást akkor nem csinál semmit, mindjárt utánna az else.
  1. if(strcmp(command, "ID") == 0){
  2.           if (value == myid || value == 0){
  3.           }else{
A hozzászólás módosítva: Okt 24, 2019
(#) djusee válasza Tetye hozzászólására (») Okt 24, 2019 / 1
 
Az 51. sortól az else if -ek teljesülnek ha az ID nem 0. Gondolom ezért teljesíti mindegyik a parancsot.
40.sor
  1. if(strcmp(command, "ID") == 0){

...
51.sor
  1. }else if(strcmp(command, "LED") == 0){
  2.           lV = value;
  3.         }else if(strcmp(command, "COLOR1") == 0){
  4.           c1V = value;
  5.         }else if(strcmp(command, "COLOR2") == 0){
  6.           c2V = value;
  7.         }else if(strcmp(command, "COLOR3") == 0){
  8.           c3V = value;
  9.         }else if(strcmp(command, "BR") == 0){
  10.           bV= value;
  11.         }

de esetleg alaposabban megnézem ha lesz idöm, lehet hogy figyelmenkívül hagytam valamit
(#) tbarath hozzászólása Okt 24, 2019 /
 
Készül egy "Pro IDE" Arduino-hoz: Bővebben: Link

A debugger rész izgalmasan hangzik, aztán meglátjuk mi lesz belőle.
(#) kapu48 válasza Tetye hozzászólására (») Okt 25, 2019 / 1
 
Én így oldottam meg a hasonló soros parancs értelmező feladatot. Pl.:
MP3Shield_Serial_Interpreter.ino
Bővebben: Link

Remélem hasznát veszed!
A hozzászólás módosítva: Okt 25, 2019
Következő: »»   559 / 854
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