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   797 / 851
(#) robis01 válasza sany hozzászólására (») Máj 15, 2023 /
 
Egy másik lehetőség a bitek változtatása.
Ha LED-eket egy Port-ra (pl: portB) teszed akkor, minden bit "1" állapotára a LED világít, a "0"-ra meg nem. Így elég csak a PortB lábainak állapotát (biteket) véletlenszerűen forgatni egy For... cikluson belül.
Lehet úgyis hogy csak egy LED világít a 8-ból, de lehet úgyis hogy egyszerre több világít.
Ha végzett a For... ciklussal lehet beolvasni PortB állapotát amit le kell menteni "A" "B" "C" változóba.
Mivel "A"="B"="C" ezért elég csak kettő feltételt ellenőrizni.
IF A=B & A=C then...
(#) kapu48 válasza sany hozzászólására (») Máj 15, 2023 /
 
Bővebben: Link while
  1. // itt hasonlítanám össze az egyes átadott azonosítokat sz1=sz2m stb.....
  2.  if(sz1==sz2 && sz1==sz3) {
  3.  // ha egyformák? fizetsz ...
  4.  
  5.  while (1) { //itt meg állsz
  6.    // kilépsz valamire pl. megnyomot egy gombot?
  7.    if(digitalRead(button) == LOW){break;}  // kilépsz
  8.  }
  9. }
  10. // ...
(#) sany válasza kapu48 hozzászólására (») Máj 15, 2023 /
 
Ez sajnos nem ennyire egyszerű, mert multiplexelés miatt folyamatosan "léptett", így nem állna meg, vagyis nem látszana az eredmény.

Közben találtam kódot a tömbökre, átalakítottam. Ami csak kiírná külön digitekre a számokat. Igaz multiplexelés nincs még. De szerintem a három különböző digit kezelés nem fog működni.

  1. int seven_seg[] = {6,7,8,9,10,11,12};
  2. int digit1_pin=3;
  3. int digit2_pin=4;
  4. int digit3_pin=5;
  5.  
  6. int num_array[10][7] = {{ 1, 1, 1, 1, 1, 1, 0 },  // 0
  7.                         { 0, 1, 1, 0, 0, 0, 0 },  // 1
  8.                         { 1, 1, 0, 1, 1, 0, 1 },  // 2
  9.                         { 1, 1, 1, 1, 0, 0, 1 },  // 3
  10.                         { 0, 1, 1, 0, 0, 1, 1 },  // 4
  11.                         { 1, 0, 1, 1, 0, 1, 1 },  // 5
  12.                         { 1, 0, 1, 1, 1, 1, 1 },  // 6
  13.                         { 1, 1, 1, 0, 0, 0, 0 },  // 7
  14.                         { 1, 1, 1, 1, 1, 1, 1 },  // 8
  15.                         { 1, 1, 1, 1, 0, 1, 1 }}; // 9
  16.                        
  17. int num_array2[10][7] = {{ 1, 1, 1, 1, 1, 1, 0 },  // 0
  18.                         { 0, 1, 1, 0, 0, 0, 0 },  // 1
  19.                         { 1, 1, 0, 1, 1, 0, 1 },  // 2
  20.                         { 1, 1, 1, 1, 0, 0, 1 },  // 3
  21.                         { 0, 1, 1, 0, 0, 1, 1 },  // 4
  22.                         { 1, 0, 1, 1, 0, 1, 1 },  // 5
  23.                         { 1, 0, 1, 1, 1, 1, 1 },  // 6
  24.                         { 1, 1, 1, 0, 0, 0, 0 },  // 7
  25.                         { 1, 1, 1, 1, 1, 1, 1 },  // 8
  26.                         { 1, 1, 1, 1, 0, 1, 1 }}; // 9
  27.  
  28.  
  29.                        
  30. int num_array3[10][7] = {{ 1, 1, 1, 1, 1, 1, 0 },  // 0
  31.                         { 0, 1, 1, 0, 0, 0, 0 },  // 1
  32.                         { 1, 1, 0, 1, 1, 0, 1 },  // 2
  33.                         { 1, 1, 1, 1, 0, 0, 1 },  // 3
  34.                         { 0, 1, 1, 0, 0, 1, 1 },  // 4
  35.                         { 1, 0, 1, 1, 0, 1, 1 },  // 5
  36.                         { 1, 0, 1, 1, 1, 1, 1 },  // 6
  37.                         { 1, 1, 1, 0, 0, 0, 0 },  // 7
  38.                         { 1, 1, 1, 1, 1, 1, 1 },  // 8
  39.                         { 1, 1, 1, 1, 0, 1, 1 }}; // 9
  40.  
  41. void setup() {
  42.  
  43.   pinMode(digit1_pin, OUTPUT);
  44.   pinMode(digit2_pin, OUTPUT);
  45.   pinMode(digit3_pin, OUTPUT);
  46.   digitalWrite(digit1_pin, LOW);
  47.   digitalWrite(digit2_pin, LOW);
  48.   digitalWrite(digit2_pin, LOW);
  49.   for (int i = 0; i <= 8; i++) {
  50.     pinMode(seven_seg[i], OUTPUT);
  51.   }
  52. }
  53.  
  54. void loop() {
  55.  
  56.   printNumber(7);
  57.   printNumber2(5);
  58.   printNumber3(3);
  59.    
  60. }
  61.  
  62. void printNumber(int number) {
  63.   int pin;
  64.   for (int j = 0; j < 7; j++) {
  65.     pin = seven_seg[j];
  66.     digitalWrite(pin, num_array[number][j]);
  67.   }
  68. }
  69.  
  70.  
  71. void printNumber2(int number) {
  72.   int pin;
  73.   for (int j = 0; j < 7; j++) {
  74.     pin = seven_seg[j];
  75.     digitalWrite(pin, num_array2[number][j]);
  76.   }
  77. }
  78.  
  79. void printNumber3(int number) {
  80.   int pin;
  81.   for (int j = 0; j < 7; j++) {
  82.     pin = seven_seg[j];
  83.     digitalWrite(pin, num_array3[number][j]);
  84.   }
  85. }
A hozzászólás módosítva: Máj 15, 2023
(#) kapu48 válasza sany hozzászólására (») Máj 15, 2023 /
 
Akkor a whileben meghívod a kijelző rutint amit be állítasz multiplexeli neked!
(#) Massawa válasza sany hozzászólására (») Máj 15, 2023 /
 
Valamit nem értek, ha csak számokat (0-9) akarsz kiirni, akkor felesleges ez a tömb.
Azt töketesen megoldja a SevSeg könyvtár is.
Én azt hittem olyan jeleket is ki akarsz irni, amik nem számokat mutatnak, pl || stb.
A muxhoz meg mindenképen kell a három változo A,B,C.

Azaz nekeked a rnd funkcioval tartalmat kell adnod a 3 változonak. És csak utánna indulhat a mux.
Ezt nyilván 1-2 másodpercig ismételned kell, miután ujabb tartalmat adsz, különben nem fogsz látni a displayen semmit. Közben elvégezheted az összehasonlitást, és dönthetsz a továbbiakrol.
(#) sany válasza Massawa hozzászólására (») Máj 15, 2023 /
 
Ez csak olyan elindulási minta. Hogy lássam, ha számot kiír, akkor majd karaktert is kifog.
(#) sany válasza robis01 hozzászólására (») Máj 15, 2023 /
 
Az a gond, hogy minden szám 7 biten megy ki, tizedes pont nincs. Ha valami változik minden változik.
(#) Massawa válasza Massawa hozzászólására (») Máj 15, 2023 /
 
Vagy ugy is csinálhatod mint a kaszinogépben.

Ahogy a tömben benne van a 10 sor ( 0-9 számig) vagy akár tovább is ( ha más jeletis akarrsz pl H, U stb), akor lesz X sor a tömbben.
Ha elinditod a gépet, az egyenként fogja “ pörgetni “ a 3 hengert, amelyiken ugyanaz az X mennyiségü jel van. ( azaz csak 1 tömb kell mind a 3 kijelzöhöz.
A pörgetést kell ramdomizálni, s mondja 1 másodperc alatt vagy 5 firdulatot megteszés megáll valahol a (0-X) sor között. Azaz az A változoban elmented a sor számot a 0-X között. Most ezt megismétled a B re is.
Most elinditod a MUXot az A már adott, ehhez jön a B.
Ha a B érték is megvan. ( 0-X között) akkor jön C érték.
Es a MUX meghosszabbitása C-ig.
Ha az is megvan akkor jön az összehasonlitás, és a nyeremeény.
(#) Antennaman válasza sargarigo hozzászólására (») Máj 16, 2023 /
 
Szia sárgarigó,
Köszönöm a biztatást, de látod nekem még az sem megy , hogy feltöltsek egy mások által megírt sketch-et. Sokfelé olvasgatok amikor hibára keresek megoldást de hozzám hasonlóan vak vezet világtalant válaszokat találok. Most is napok óta küzdök egy újabb rádióval melyben ESP32 DEV. modul működtetne I2C buszon egy SI4732 rádió IC-t és egy 2,8" Touch TFT-t. Kitöröltem az összes fájlt a libraies-ből és csak azokat keresgettem össze amelyek említve voltak és már annyit elértem, hogy nem akad meg mindig valami .h (header ?) fájl hiánya miatt az arduino felület. Csak már meg azt írja ki, hogy hiba az alaplapra fordításnál. Ebben tudnál segíteni tanáccsal mit állítsak még be? A printscreen remélem aránylag kiértékelhető!
Köszönöm .
A hozzászólás módosítva: Máj 16, 2023
(#) vargham válasza sany hozzászólására (») Máj 16, 2023 /
 
Minek három egyforma tömb meg három függvény?
(#) vargham válasza sany hozzászólására (») Máj 16, 2023 /
 
Én nem piszkálnám a kiiírást a fő hurokból. Rábíznám egy timer interruptra. A főprogram bármikor megváltoztathatná bármelyik karaktert. Aztán amikor a multiplexelő algoritmus odaér, akkor kiírja.
(#) vargham válasza sany hozzászólására (») Máj 16, 2023 /
 
Amennyiben AVR mikrokontrollert használsz, a karakterek kinézetét érdemes progmem-ben tárolni, különben hamar elfogy a RAM.
(#) Jonni hozzászólása Máj 16, 2023 /
 
Van az a hagyományos kirási rutin DS18B20 szenzorhoz.

  1. #include <Adafruit_PCD8544.h>  // adafruit PCD8544 (Nokia 5110)könyvtár
  2. #include <OneWire.h>
  3. #include <DallasTemperature.h>
  4. #define ONE_WIRE_BUS 2          
  5. Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3);// Nokia LCD bekötés (CLK, DIN, D/C, CS, RST)
  6. OneWire oneWire(ONE_WIRE_BUS);
  7. DallasTemperature sensors(&oneWire);
  8.  
  9.  
  10. void setup() {
  11.   sensors.begin();                    
  12.   display.begin();                    
  13.   display.setContrast(62);            
  14.   display.clearDisplay();            
  15.   display.setTextSize(1,2);            
  16.   display.setTextColor(BLACK, WHITE);
  17.   display.drawCircle(33, 2, 2, BLACK);
  18.   display.setCursor(38, 0);          
  19.   display.print("C");                
  20. }
  21.  
  22. void loop() {
  23.   display.display();
  24.   sensors.requestTemperatures();      // Küldje el a parancsot a hőmérséklet lekéréséhez
  25.   display.setCursor(0, 0);            // 1. oszlop 2. sor
  26.   display.print(sensors.getTempCByIndex(0)); // kiszámolja a és kiírja a  hömérsékletet
  27.   // delay(500);                         // vár 0,5 másodpercet
  28. }


Itt a mért értéket úgy jelzi ki hogy PL 23.75 de én csak 1 tizedes pontossággal akarom (a százados nekem nem kell) ezt hogy lehet megoldani?
(#) SzilCsong válasza robis01 hozzászólására (») Máj 16, 2023 /
 
Így kötöttem be: https://www-teachmemicro-com.translate.goog/arduino-rfid-rc522-tuto...pto=sc
Az A4 és A5-re
kipróbáltam a másik I2C csatlakozót is (jól tudom, hogy az uno 2db i2c csatlakozója is van?)
de ott se volt jó, mindegy, visszatérek az SPI megoldáshoz, ennek működnie kellene.
Kipróbáltam 2db MFRC-vel, de csak úgy, hogy a másik SS lábát nem kötöttem be és teszteltem közbe az aktívat, nagyon instabil, van, hogy működik, van, hogy nem.
Ha kiiktatom és csak az aktívat vizsgálom, akkor stabilan működik.
Az SS lábon látok 2V feszültséget, és ez nem lebegés, mert ha teszek rá egy ledet, akkor is.
Amikor ráteszem a kártyát és beolvassa, arra az egy másodpercre felmegy az SS 5V-ra.
Most az SS lábat az mi vezérli, az Uno vagy az MFRC? Miért 2V-ot mérek rajta, miért nem 0-át?
(#) toth1996 hozzászólása Máj 16, 2023 /
 
Sziasztok.
Megpróbálom az ardunio energiaellátását levinni picit.
5mA-ig tudtam.
PWR Led elötét ellenállás kiforasztva.
  1. set_sleep_mode(SLEEP_MODE_PWR_DOWN);
  2.         sleep_enable();
  3.         sleep_mode();
  4.         sleep_cpu();//Ez 1-2mA csökkentett


Vin röl kapja a + tápot de tippelem a stab ic ami benne van az eszik 5mA.
Mivel lehet még szoftveresen csökkenteni?
(#) SzilCsong hozzászólása Máj 16, 2023 /
 
Ha esp8266-ra *.bin filet akarok tölteni, azt mivel lehet?
(#) sany válasza vargham hozzászólására (») Máj 16, 2023 /
 
Igen. Arduino UNO lesz. Próbálkozok.
(#) benjami válasza SzilCsong hozzászólására (») Máj 16, 2023 /
 
Itt az oldal első harmadánál találsz 2 db linket a (32 illetve a 64 bites win alá készült) esp8266flasher nevű programhoz.
(#) SzilCsong válasza benjami hozzászólására (») Máj 16, 2023 /
 
próbáltam, nem működik
(#) SzilCsong válasza benjami hozzászólására (») Máj 16, 2023 /
 
Az arduino IDE-ba van ilyen, hogy vázlat/lefordított bináris exportálása.
Sajnos ez nem úgy exportál, hanem lementi a jelenlegi vázlatot *.bin-be.
(#) benjami válasza SzilCsong hozzászólására (») Máj 16, 2023 /
 
ESP01 modulra évekkel ezelőtt töltöttem fel ezzel a programmal bin fájlokakat, de már nem emlékszem pontosan hogyan csináltam. Ugyanez a verzió volt, és a 64 bitest használtam.
Ezt tettem fel, 4 bin fájlt tartalmaz, az oldalon meg van adva melyik bin fájlt melyik címre kell feltölteni.
A hozzászólás módosítva: Máj 16, 2023
(#) SzilCsong válasza benjami hozzászólására (») Máj 16, 2023 /
 
flash_download_tool_3.9.4. is próbálom, de ez se működik
(#) benjami válasza SzilCsong hozzászólására (») Máj 16, 2023 /
 
És fel sem tölti, vagy csak nem működik amit feltöltöttél?
(#) SzilCsong válasza benjami hozzászólására (») Máj 16, 2023 /
 
Nem csinál semmit, de nem is vágom, hogy nála a "download" szó mit jelent? mert én rátölteni akarok, de akkor az upload, de mire gondol? lehet, hogy ő letölteni akar és a kijelölt bin helyére?
(#) GPeti1977 válasza Jonni hozzászólására (») Máj 16, 2023 /
 
Több féleképpen is lehet.
display.print(sensors.getTempCByIndex(0));
helyett:
float cels = (sensors.getTempCByIndex(0));
display.print(cels, 1);
A hozzászólás módosítva: Máj 16, 2023
(#) SzilCsong válasza benjami hozzászólására (») Máj 16, 2023 /
 
Tud kommunikálni az esp-vel, csak a kiválasztott file feltöltése (ami pont a lényeg lenne) az nem megy neki.
Mellékletem képet a yt video van a háttérbe, neki jó, ugyanúgy csinálom pedig. A kiválasztott file mellett nekem valamiért piros, valami memóriacím lehet, nem tudom, ott lesz a hiba, vagy amiatt.Rejtély, arra hiába kattintok.

esp8266.png
    
(#) SzilCsong válasza SzilCsong hozzászólására (») Máj 16, 2023 /
 
Tehát azt a memóriacímet ki kell tölteni, de csak a pipa levételekor lehet 0x0000-ra és akkor megy a *.bin feltöltése ezzel a programmal

// fölírtam mindent egy txt-ba mert tutira el fogom felejteni és kezdhetem előrröl
(#) pipi válasza Antennaman hozzászólására (») Máj 16, 2023 /
 
Hali! Húzd feljebb a hibaüzenet ablak tetejét, hogy el lehessen olvasni a hibát, ne csak azt hogy hiba van...
(#) hadhazik válasza hadhazik hozzászólására (») Máj 16, 2023 /
 
Az segítene, ha megbontanám és egyedül küldeném a state értéket egy packetben?
(#) sany válasza vargham hozzászólására (») Máj 16, 2023 /
 
Igen, erre már én is rájöttem.

Massawa fórumtársunktól kérdezném így gondoltad, majdnem? Pörgeti és valahogy talán jobban tudom, majd kialakítani.

Jó az irány szerintetek?
Őszintén nem tudom, hogy állítsam meg, hogy írassam ki.

Még próbálkozok.

  1. const int digit[] = {3, 4, 5};    // A 7 szegmenses kijelző digit pinei
  2. const int szegmens[] = {6, 7, 8, 9, 10, 11, 12};  //A szegmenesek
  3. unsigned long ido_sec;
  4.  
  5.  
  6. // Szimbólumok
  7. byte szimbolumok[7] = {
  8.   B1111110,  
  9.   B1111111,  
  10.   B1010010,  
  11.   B1100100,  
  12.   B0111111,  
  13.   B1011100,  
  14.   B1100100,
  15.  
  16. };
  17.  
  18. void setup() {
  19.  
  20.    
  21.    // digit pinjei beállítása kimenetnek
  22.   for (int i = 0; i < 3; i++) {
  23.     pinMode(digit[i], OUTPUT);
  24.   }
  25.  
  26.   // szegmenes pinjei beállítása kimenetnek
  27.   for (int i = 0; i < 8; i++) {
  28.     pinMode(szegmens[i], OUTPUT);
  29.   }
  30. }
  31.  
  32. void msdelay(int ido)
  33. {
  34.    
  35.     ido_sec = millis();
  36.     while (millis() - ido_sec < ido)
  37.     { }
  38. }
  39.  
  40. void porgetes() {
  41.   for (int i = 0; i < 3; i++) {
  42.     int veletlen = random(7);  // Véletlen pörgetés
  43.  
  44.     // Szimbólumok kiírása
  45.     for (int j = 0; j < 8; j++) {
  46.       if (bitRead(szimbolumok[veletlen], j)) {
  47.         digitalWrite(szegmens[j], HIGH);
  48.       } else {
  49.         digitalWrite(szegmens[j], LOW);
  50.       }
  51.     }
  52.  
  53.    
  54.     for (int j = 0; j < 3; j++) {
  55.       if (j == i) {
  56.         digitalWrite(digit[j], HIGH);   // A kiválasztott digit pin bekapcsolása
  57.       } else {
  58.        digitalWrite(digit[j], LOW);  // A többi digit pin kikapcsolása
  59.      }
  60.     }
  61.  
  62.     msdelay(1);
  63.   }
  64. }
  65.  
  66.  
  67.  
  68. void loop() {
  69.  
  70.  porgetes();
  71. }
A hozzászólás módosítva: Máj 16, 2023
Következő: »»   797 / 851
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