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   657 / 845
(#) usane válasza mapetek hozzászólására (») Okt 11, 2020 /
 
(#) mapetek válasza mapetek hozzászólására (») Okt 11, 2020 /
 
2 icvel 6 leddel semmi anomália (ez próbaüzem).
Emeli, és csökkenti a led fényerejét.
Szerintem jó.
(#) jimmi12 hozzászólása Okt 12, 2020 / 1
 
Sziasztok, az alábbi kóddal kapcsolatban kérnék segítséget:
- a lényeg működik, első sorban megjelenik az adott állomás neve, a második sorban pedig "meta" adatok. Amit szeretnék változtatni az a második sor megjelenítése, jelenleg nagyon gyorsan "scroll-ozik", ezt szeretném lassítani, de sajnos eddig akármelyik delay-t változtattam az eredmény maradt ugyanaz. Valaki tudna ebben segíteni?

  1. /*
  2.   Karadio IIC LCD 16x2.ino
  3.   Edited by Alexander - yo2ldk - 2019.
  4.   Arduino Board         IIC LCD
  5.        A4                 sda  
  6.        A5                 scl  
  7. */
  8. // include the library code:
  9. #include <Wire.h>
  10. #include <LiquidCrystal_I2C.h>
  11.  
  12. //#define I2C_ADDR    0x27 // <<----- Add your address here.  Find it from I2C Scanner
  13. //#define BACKLIGHT_PIN 3
  14. //#define En_pin  2
  15. //#define Rw_pin  1
  16. //#define Rs_pin  0
  17. //#define D4_pin  4
  18. //#define D5_pin  5
  19. //#define D6_pin  6
  20. //#define D7_pin  7
  21.  
  22. //int n = 1;
  23.  
  24. //LiquidCrystal_I2C  lcd(I2C_ADDR, En_pin, Rw_pin, Rs_pin, D4_pin, D5_pin, D6_pin, D7_pin);
  25.  
  26. LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  // Set the LCD I2C address, if it's not working try 0x27.
  27.  
  28. #define version 3.0
  29. #include <EEPROM.h>
  30. const int  EEaddr          = 0;     // EEPROM address for storing WPM
  31. const int  EEaddr1         = 2;     // EEPROM address for LCD address
  32. const int  EEaddrIp        = 10;    // EEPROM address for the IP
  33.  
  34. // Character array pointers
  35. char  msg[]       = {"Karadio LCD"}; //
  36. char  msg1[]      = {"(c) KaraWin"}; //
  37. char  blank[]     = {"                "};
  38. char  msg2[]      = {" Internet Radio "};
  39.  
  40. // Karadio specific data
  41. #define BUFLEN  200
  42. #define LINES  2
  43. char line[BUFLEN]; // receive buffer
  44. char station[BUFLEN]; //received station
  45. char title[BUFLEN]; // received title
  46. char nameset[BUFLEN];
  47. char* lline[LINES] ; // array of ptr of n lines
  48. int  iline[LINES] ; //array of index for scrolling
  49. byte  tline[LINES] ;
  50. char* ici;
  51. char* ici2;
  52. unsigned index = 0;
  53. unsigned loopcount = 0;
  54. unsigned scrl = 0;
  55.  
  56. int x = 16;    //Width
  57. char temp;
  58.  
  59. ////////////////////////////////////////
  60. // Clear all buffers and indexes
  61.  
  62. void clearAll()
  63. {
  64.   title[0] = 0;
  65.   station[0] = 0;
  66.   for (int i = 0; i < LINES; i++)
  67.   {
  68.     lline[i] = NULL; iline[i] = 0; tline[i] = 0;
  69.     lcd.setCursor(0, i);
  70.     lcd.print(blank);
  71.   }
  72. }
  73. ////////////////////////////////////////
  74. void cleartitle()
  75. {
  76.   title[0] = 0;
  77.   for (int i = 1 ; i < LINES; i++) // clear lines
  78.   {
  79.     lline[i] = NULL;
  80.     iline[i] = 0;
  81.     tline[i] = 0;
  82.     lcd.setCursor(0, i);
  83.     lcd.print(blank);
  84.   }
  85.   draw();
  86. }
  87.  
  88. ////////////////////////////////////////
  89. void eepromReadStr(int addr, char* str)
  90. {
  91.   byte rd;
  92.   do {
  93.     rd = EEPROM.read(addr++);
  94.     *str = rd;
  95.     //    Serial.println(str[0],16);
  96.     str++;
  97.   } while (( rd != 0) && ( rd != 0xFF));
  98.   *str = 0;
  99. }
  100.  
  101. ////////////////////////////////////////
  102. void eepromWriteStr(int addr, char* str)
  103. {
  104.   byte rd;
  105.   do {
  106.     EEPROM.write( addr++, *str);
  107.     rd = *str;
  108.     str++;
  109.   } while (( rd != 0) && ( rd != 0xFF));
  110.   EEPROM.write( addr, 0);
  111. }
  112.  
  113. ////////////////////////////////////////
  114. // parse the karadio received line and do the job
  115.  
  116. void parse(char* line)
  117. {
  118. int mul;
  119.      removeUtf8((byte*)line);
  120. //   Serial.println(line);
  121.  ////// Meta title
  122.    if ((ici=strstr(line,"META#: ")) != NULL)
  123.    {
  124.      cleartitle();
  125.      strcpy(title,ici+7);    
  126.    lline[1] = title;
  127.    draw();  
  128.    } else
  129.  
  130.  ////// ICY0 station name
  131.    if ((ici=strstr(line,"ICY0#: ")) != NULL)
  132.    {
  133.       int len;
  134.       clearAll();
  135.     if (strlen(ici+7) == 0) strcpy (station,nameset);
  136.       else strcpy(station,ici+7);
  137.     lline[0] = station;
  138.     draw();
  139.    } else
  140.  ////// STOPPED  
  141.    if ((ici=strstr(line,"STOPPED")) != NULL)
  142.    {
  143.        cleartitle();
  144.        strcpy(title,"STOPPED");
  145.      lline[1] = title;
  146.          draw();  
  147.    }    
  148.  /////// Station Ip      
  149.    else  
  150.    if ((ici=strstr(line,"Station Ip: ")) != NULL)
  151.    {
  152.        char oip[20];
  153. //   Serial.println(line);
  154.        eepromReadStr(EEaddrIp, oip);
  155.        if ( strcmp(oip,ici+12) != 0)
  156.          eepromWriteStr(EEaddrIp,ici+12 );
  157.    }
  158. }
  159.  
  160. ////////////////////////////////////////
  161. //Setup all things, check for contrast adjust and show initial page.
  162.  
  163. void setup(void) {
  164.    char oip[20];
  165.   Serial.begin(115200);
  166.   while (!Serial) { ;}
  167.   lcd.begin(16,2);
  168.   pinMode(13, OUTPUT); // led
  169.   lcd.clear();
  170.   lcd.noAutoscroll() ;
  171.   lcd.print(msg);
  172.   lcd.setCursor(0,1);
  173.   lcd.print(msg1);
  174.   delay(3000);
  175.   clearAll();
  176.  
  177.   eepromReadStr(EEaddrIp, oip);
  178.   lline[0] = (char*)"IP:";
  179.   lline[1] = oip;
  180.   draw();
  181.  
  182. }
  183.  
  184. ////////////////////////////////////////
  185. // receive the esp8266 stream
  186.  
  187. void serial()
  188. {
  189.   char temp;
  190.   while ((temp = Serial.read()) != -1)
  191.   {
  192.     switch (temp)
  193.     {
  194.       case '\n' : if (index == 0) break;
  195.       case '\r' :
  196.         line[index] = 0; // end of string
  197.         index = 0;
  198.         parse(line);
  199.         break;
  200.         default : // put the received char in line
  201.         if (index > BUFLEN - 1) break; // small memory so small buffer
  202.         line[index++] = temp;
  203.     }
  204.   }
  205. }
  206.  
  207. ////////////////////////////////////////
  208. // draw all lines
  209. void draw()
  210. {
  211.   lcd.clear();
  212.   for (int i = 0;i < LINES;i++)
  213.  
  214.   //for (int i = LINES - 1; i >= 0; i--)
  215.   {
  216.     serial();
  217.     lcd.setCursor(0,i);
  218.     if ((lline[i] != NULL)) lcd.print(lline[i] + iline[i]);
  219.     delay(1500);
  220.   }
  221.  
  222. }
  223. ////////////////////////////////////////
  224. // scroll each line
  225. void scroll()
  226. {
  227. unsigned len;
  228.   for (int i = 0;i < LINES;i++)
  229.   {  
  230.      if (tline[i]>0)
  231.      {
  232.        if (tline[i] == 4) iline[i]= 0;
  233.        tline[i]--;    
  234.      }
  235.      else
  236.      {
  237.        len = strlen(lline[i]+(iline[i]));
  238.        if (len > x) iline[i]++;
  239.      
  240.       else
  241.       {tline[i] = 6;}
  242.      }
  243.   }
  244.   draw();
  245. }
  246. ////////////////////////////////////////
  247. void loop(void) {
  248.   serial();
  249.   if (loopcount++ == 0x3fff)
  250.   {
  251.     loopcount = 0;
  252.     if (++scrl%6 == 0) digitalWrite(13,HIGH);
  253.     scroll();
  254.     digitalWrite(13,LOW);
  255.   }
  256.  
  257. }
  258. void removeUtf8(byte *characters)
  259. {
  260.   int index = 0;
  261.   while (characters[index])
  262.   {
  263.     if ((characters[index] >= 0xc2)&&(characters[index] <= 0xc3)) // only 0 to FF ascii char
  264.     {
  265.       //      Serial.println((characters[index]));
  266.       characters[index+1] = ((characters[index]<<6)&0xFF) | (characters[index+1] & 0x3F);
  267.       int sind = index+1;
  268.       while (characters[sind]) { characters[sind-1] = characters[sind];sind++;}
  269.       characters[sind-1] = 0;
  270.  
  271.     }
  272.     index++;
  273.   }
  274. }
(#) sdrlab válasza wbt hozzászólására (») Okt 12, 2020 /
 
Biztosan nem a sima adatlapjára gondolsz, amiben egy fia elektromos paraméter nincs benne, csak a programozásáról szól...?!!
(#) sargarigo válasza jimmi12 hozzászólására (») Okt 12, 2020 /
 
Ne a delay-t változtasd, mert az csak a megjelenítés gyakoriságát állítja! Helyette a loop-ban található részbe kell piszkálni, ami a scroll-t indítja! Ez a 249. sor vége. A 0x3fff-et növeld meg mondjuk 0x5fff-re vagy 0xafff-re, és nézd mi történik!
(#) jimmi12 válasza sargarigo hozzászólására (») Okt 12, 2020 /
 
Ezer köszönet, működik
(#) sargarigo válasza jimmi12 hozzászólására (») Okt 12, 2020 /
 
Szívesen!
(#) usane hozzászólása Okt 13, 2020 /
 
Otthon van valaki az ArduinoJson könyvvtárban? 2D tömböt akarok bemásolni, de nem tudok neki kulcsot adni. Magyarul van egy 2D tömböm, amit JSONizálni akarok úgy hogy adok neki egy kulcsot is. Vagyis van egy ilyenem:
  1. uint8_t tomb[5][4];

És mondjuk a kulcs legyen Xtomb.
Tehát a végeredmnynek valahogy így kellene kinéznie ha üres a tömb.
{"Xtomb" : [0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]}
Tudja valaki ezt hogy tudom létrehozni? Visszafelé működik, tehát ha ez a bejövő JSON string akkor ebből ki tudom másolni magát a tömböt, de odafelé nem megy.
(#) usane válasza usane hozzászólására (») Okt 13, 2020 /
 
Tárgytalan. Megoldottam.
(#) jeges hozzászólása Okt 16, 2020 /
 
Helló!

Kapunk egy hibát fordításkor no matching function for call to 'HardwareSerial::begin(long int, int, bool)'!

Szeretnék maradni a hadveres soros portnál!

  1. #include <AESLib.h>
  2.  
  3.  
  4. byte key[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
  5. char data3[16];
  6.  
  7. void setup() {
  8.   Serial.begin(115200);  
  9.  
  10.  
  11.  }
  12.  
  13. void loop() {
  14.  
  15.   if (Serial.available()) {
  16.  
  17.     Serial.read(data3, sizeof(data3));
  18.    
  19. aes128_dec_single(key, data3);
  20.  
  21.   }
  22.  Serial.println("Decrypted");
  23.     for(int i=0; i<16; i++) {
  24.     Serial.print(data3[i]);
  25.   }
  26.  
  27. }
(#) sargarigo válasza jeges hozzászólására (») Okt 16, 2020 /
 
Próbáld ki úgy, hogy kiveszed az első sort az include-dal, meg a 19. sorból az aes128... utasítást! Nekem van egy tippem hogy az aes lib kavar össze valamit. Csak magában a Serial működik? Így mit mutat?
(#) jeges válasza sargarigo hozzászólására (») Okt 16, 2020 /
 
aes128 lib mért hagynám ki ezt akarom használni!
Szurd be amit leírtál "kódból" úgy jobban látni!
A hozzászólás módosítva: Okt 16, 2020
(#) sargarigo válasza jeges hozzászólására (») Okt 16, 2020 /
 
Azért kéne kihagyni, mert jó lenne tudni hogy honnan ered a hiba. Ha több helyről származhat és mindent benne hagysz, akkor honnan tudod meg hogy mi okozza? Majd ha már a lib nélkül jól megy, akkor megpróbáljuk összemasszírozni őket! De addig csak vakarjuk a fejünket a sötétben.
Idézet:
„Szurd be amit leírtál "kódból" úgy jobban látni!”

Komolyan nem értem hogy mi volt ebben a nehéz! Mondtam hogy az első sor. Meg mondtam hogy a 19. sor. Egyetlen utasítás van benne!
DE tessék:
  1. #include <AESLib.h>

  1. aes128_dec_single(key, data3);
(#) szikorapéter hozzászólása Okt 16, 2020 /
 
Sziasztok. Szeretnék egy PROM-ot kiolvasni arduino segítségével, majd a "beolvasott tartalmat" kilistázni soros monitoron hexa adatként. Ebben kérném segítségeteket.
Próbálkoztam saját "programmal", de mivel az nem vált be így hozzátok fordulok.
A kiolvasandó PROM egy TBP18SA030N PROM , összesen 256 bit tartalommal.
Ezt kellene az arduino segítségével kipörgetni, majd a PROM-ból kapott kódot hexává alakítani és kiírni a soros monitor felületén.
Összejöhet ez arduino segítségével vagy én baltáztam el valamit?
(#) sargarigo válasza szikorapéter hozzászólására (») Okt 16, 2020 /
 
Nem látom be hogy miért ne tudná kezelni! Mutasd eddig hogyan próbáltad! Mire mit kötöttél, és milyen kóddal próbálkoztál? Nem tűnik bonyolult feladatnak!
A hozzászólás módosítva: Okt 16, 2020
(#) szikorapéter válasza sargarigo hozzászólására (») Okt 16, 2020 /
 
A bekötési "rajz" így néz ki (a prom mellé fel van írva melyik láb hova volt kötve).
A kódot sikerült kukáznom annyira felmérgelt, így most próbálom visszagépelni arra amire emlékszem belőle.

Névtelen.png
    
(#) sargarigo válasza szikorapéter hozzászólására (») Okt 16, 2020 /
 
Eddig jónak tűnik!
(#) moltam válasza szikorapéter hozzászólására (») Okt 16, 2020 /
 
A kimenetek 6-7 es lábát ha jól látom rossz helyre kötötted. Ha jól nézem a többi a portc hez tartozik, de az a6 és a7 ha minden igaz csak analóg bemenetként használható.
(#) szikorapéter válasza sargarigo hozzászólására (») Okt 16, 2020 /
 
Na sikerült úgy ledarálnom a kódot hogy vissza se tudom állítani.
Akkor faragok egy másikat és felteszem ide....
(#) sargarigo válasza moltam hozzászólására (») Okt 16, 2020 /
 
Tudtommal bármire lehet használni, de most már felmerül a kérdés, hogy ez milyen lap? Én egy atmega8-ból indultam ki (vagy 328 mindegy). Az van rajta?
Szerk: Mármint szikorapétertől kérdem nyilván
A hozzászólás módosítva: Okt 16, 2020
(#) moltam válasza sargarigo hozzászólására (») Okt 16, 2020 /
 
Ebből indultam ki. Az adatlap is ezt mondja.
A hozzászólás módosítva: Okt 16, 2020

atmega.jpg
    
(#) szikorapéter válasza sargarigo hozzászólására (») Okt 16, 2020 /
 
Ennek neve lgt8f328p olyan mint az arduino nano 328P-vel szerelve csak ez valami csoda kínai utánzata, elvileg teljes értékben kompatibilis helyette.
(#) sargarigo válasza moltam hozzászólására (») Okt 16, 2020 /
 
Most már bosszant, utána nézek! A rajz tényleg erre utal..
(#) sargarigo válasza moltam hozzászólására (») Okt 16, 2020 /
 
Úgy tűnik igazad van! De érdekes, az ember mindig tanul valamit!
(#) sargarigo válasza szikorapéter hozzászólására (») Okt 16, 2020 /
 
A fentiek miatt akkor javaslom megcserélni a kimeneteket a bemenetekkel! Tehát az A0-A5 menjen az A0-A4-re és a _G -re. A kimenetek meg mehetnek a D2-től sorba!
Lássuk a kódot!
(#) sargarigo válasza sargarigo hozzászólására (») Okt 16, 2020 /
 
Amúgy annyi lesz a program, hogy sorra megcímezzük az A0-A4 segítségével, miközben a D2-D10 hozza az értékeket. Ahogy vesszük, már toljuk is ki a serial porton. Ha minden jól megy, akkor gyorsan megleszünk!
(#) moltam válasza sargarigo hozzászólására (») Okt 16, 2020 /
 
Én sem tudtam, a lábkiosztást nézegetve tűnt fel. Nem szeretem az arduino saját láb címkézését, szerintem a port írást/olvasást jobb regiszterszinten megoldani. Mindig megnézem hogy az Ax és Dx lábak valójában mit takarnak, hova vannak kötve. A konkrét feladatot úgy csinálnám hogy egy for ciklusban végigpörgetnék egy szabad portot a címtartományban, egy másik szabad portot bemenetnek állítva pedig egyszerűen minden lépésben egy tömbbe írnám a bejövő adatot, vagy akár a tömböt elhagyva azonnal hexává alakítva ki is lehetne lőni szépen sorban uartra.
(#) szikorapéter válasza sargarigo hozzászólására (») Okt 16, 2020 /
 
A fő problémám most az hogy valamiért ha rádugom a gépre nem látja az említett eszközt. Eddig gond nélkül ment. Ezen holtek illesztő chip van, se most csak megy a bele utoljára írt kód, viszont a gép nem látja, nem is csippan rá hogy rádugtam egy eszközt.
(#) sargarigo válasza szikorapéter hozzászólására (») Okt 16, 2020 /
 
Gyűlnek a felhők.. Akkor előbb ezzel kellene elszámolni!
(#) szikorapéter válasza sargarigo hozzászólására (») Okt 16, 2020 /
 
Azt írja a gép hogy nincs meg a driver, ugyhogy most kotorászás, driver keresés.
Következő: »»   657 / 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