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   798 / 845
(#) Antennaman válasza pipi hozzászólására (») Máj 16, 2023 /
 
OK pipi,
Köszi ha bele pillantasz mi a hiány.
Közben észrevettem, hogy létrehozott az Arduino egy újabb libraries helyet Arduinoe elnevezéssel ugyanúgy a dokumentumokban.
Köszi,Antennaman
A hozzászólás módosítva: Máj 16, 2023
(#) pipi válasza Antennaman hozzászólására (») Máj 17, 2023 /
 
Szerintem a felesleges "azonos jellegű" könyvtárakat távolítsd el. Lehet a 2 fajta tft könyvtárból nem tudja eldönteni mit használjon.
Hiányolja az avr/pgmspace.h-t
(#) robis01 válasza sany hozzászólására (») Máj 17, 2023 /
 
Igazad van. Plusz a portok nem olyan szabadok mintha magát az AVR programoznád. Jobb ha változóba van tárolva port láb száma.

Wokwi -ben készült, ha bemásolod akkor futnia kell. Az ötlet is wokwi-ről jött

  1. const int ledCount = 10;    // the number of LEDs in the bar graph
  2. int ledPins[] = {
  3.   2, 3, 4, 5, 6, 7, 8, 9, 10, 11
  4. };
  5.  
  6. byte veletlenszam;
  7. byte A = 0;
  8. byte B = 0;
  9. byte C = 0;
  10. byte Ido = 5;
  11.  
  12.  
  13.  
  14. void setup() {
  15.   // loop over the pin array and set them all to output:
  16.   for (int thisLed = 0; thisLed < ledCount; thisLed++) {
  17.     pinMode(ledPins[thisLed], OUTPUT);
  18.   }
  19.   Serial.begin(9600);
  20. }
  21.  
  22. void loop() {
  23.  
  24. veletlenszam = random(2,8);
  25. A = veletlenszam;
  26. //Serial.print("veletlenszam: ");
  27. //Serial.print(veletlenszam);
  28. Serial.print("  A: ");
  29. Serial.println(A);
  30.  
  31.  
  32.  
  33. veletlenszam = random(2,8);
  34. B= veletlenszam;
  35. Serial.print("  B: ");
  36. Serial.println(B);
  37.  
  38.  
  39.  
  40. veletlenszam = random(2,8);
  41. C= veletlenszam;
  42. Serial.print("  C: ");
  43. Serial.println(C);
  44.  
  45.  
  46. // mutltiplexelni csak A, B, C kell, ezt még ki kell dolgozni
  47. digitalWrite(A, HIGH);
  48. delay(Ido);                      
  49. digitalWrite(A, LOW);
  50. delay(Ido);                      
  51.  
  52. digitalWrite(B, HIGH);
  53. delay(Ido);                      
  54. digitalWrite(B, LOW);
  55. delay(Ido);                      
  56.  
  57. digitalWrite(C, HIGH);
  58. delay(Ido);                      
  59. digitalWrite(C, LOW);
  60. delay(Ido);                      
  61.  
  62.  
  63. if (A == B && A==C) {
  64. Serial.println("NYERT");
  65. delay(1000000);
  66. }
  67.  
  68. A=0;
  69. B=0;
  70. C=0;
  71.  
  72. }
(#) robis01 válasza SzilCsong hozzászólására (») Máj 17, 2023 /
 
Talán azért mert a kettőt ötvözted. A fúrt lyukas csak az 1 lábat (I2C) szakítja meg, a kapton szalagos az EA lábat is.

Adatlap alapján az alábbiakat kell beállítani: adatlap

A sebbegéset be lehet állítani a start bitet megelőző időzített hosszúságú bittel: 8. Functional description
Ez egyben beállítja a kódolás típusát is (Manchester, BPSK), ennek nem néztem utána, de gondolom az Arduino automatikusan kezeli.

I2C láb nem lóghat, fel kell húzni logikai 1-re: Table 5. Connection protocol for detecting different interface types.
Cím beállításhoz az EA lábat, és a hozzá tartozó ADR_0, ADR_1, ADR_2 lábakat is be kell állítani: 8.1.4.5 7-Bit addressing
Kezdetben célszerű mind a 4 lábat lehúzni a "0"-ra (lehet hogy az ADR_0, ADR_1, ADR_2 lábak már eleve oda vannak kötve) ebben az esetben a címe 0101000X (x az írást vagy olvasást jelenti): Fig 16. First byte following the START procedure

Felhúzó ellenállást ugyan csak az SDA lábra említi, de érdemes lehet tenni az SCL lábra is: 8.1.4 I2C-bus interface.

Hasonlókat lehet olvasni itt is:i2c

UNO-n lévő SCL, SDA lábak ha jól tudom ugyan oda vannak bekötve, előnye hogy egyszerre több i2c eszközt is rá tudsz csatlakoztatni az UNO-ra.

AZ SPI kérdéshez idő hiányában annyit tudok érdemben hozzátenni, hogy az ARDUINO vezérli az SS lábat Fig 7. SPI connection to host Érdemes átolvasni az adatlapot mit ír róla.
(#) Massawa válasza sany hozzászólására (») Máj 17, 2023 / 1
 
Bocs, éjjel késön értem haza.

Igen kb igy gondoltam, habár igy a kodot nehezebben értem, mint amikor magam irom.

A lényeg az amit csináltál. A [szimbolumok] tömbe beirhatod a valamennyi elképzelhetö változatot, majd a véletlenszerüen kiválasztasz egy sor ( amit elmentesz a A, B és a C változokba). Ha mind a 3ban ugyanaz a sor van akkor nyert.
Ami még hiányzik az a pörgetés hozzárendelése az A,B meg a C dobhoz.
Azaz a 3 dobot is én beirnám egy tömbbe.
A, B , C

Ha jol látom robis kolléga már kiegészitette.
Amikor az A dobra hivod a pörgetést akkor a 42.sorban kapott [véletlen] értéket beirod az A változoba. Majd ugyanezt a következö lefutásnál a B-be majd meg a C-be. Ha mind a 3 pörgetés lefutott, akkor összehasonlitod a 3 (A,B,C) változot.


A pörgetésbe még bevihetsz olyan luxust, hogy a véletlen (42.sor) elött még megpörgeted a dobot, azaz végugmész [néhányszor] az összes szimbolumon. Akár a néhányszort is a véletlenre bizhatod mondjuk 1-10 között. Azaz a játékos látja, hogy milyen szimbolumok vannak a dibon ( ha jo sebességet választol ) majd azután jön a véletlen sor kiválasztása. Stb.

Tabletröl irom ide nem tudok igy kodot irni
A hozzászólás módosítva: Máj 17, 2023
(#) Massawa hozzászólása Máj 17, 2023 /
 
Nicsak mit találtam. Már a KI is meg tudja oldani a feladatot. Csak kérdezni kell tudni.

Véletlen generator
(#) SzilCsong válasza Massawa hozzászólására (») Máj 17, 2023 /
 
Már próbáltam párszor, alapvető dolgokra jó, de egy összetettebb feladatnál nem sok haszna.
(#) Massawa válasza SzilCsong hozzászólására (») Máj 17, 2023 / 1
 
Arra a feladatra amit Sany kolléga tervez valoszinü, hogy jo megoldásokat találna.
(#) SzilCsong válasza robis01 hozzászólására (») Máj 17, 2023 /
 
Ajaj, ezt már még egyszer szét nem szedem, kívüről meg nem tudok ráforrasztani felhúzó ellenállást.
Se mint írtem passzolom az I2c-s megfoldást, viszont az elgndolkodtató, hogy miért próbálkoznak sokan vele, másnak se működik a több SPI eszköz? Nem csak nálam?
Mi lehet ennek az oka...
(#) SzilCsong válasza Massawa hozzászólására (») Máj 17, 2023 /
 
Csak poénból megkérdeztem tőle, hogy lehet I2c-be kötni az MFRC522-t és az arduinot, a chat gdp kerek perec megmondta, hogy nem lehet
(#) sany válasza Massawa hozzászólására (») Máj 17, 2023 /
 
Meg lehet kérdezni, mit ajánl.
De én jobban bízok ebben.
A hozzászólás módosítva: Máj 17, 2023
(#) robis01 válasza robis01 hozzászólására (») Máj 17, 2023 / 1
 
Egy kicsit átírtam a programot. Így az első virtuális dob 10-szer, a második 20-szor, harmadik 30-szor fordul át, majd a végén megnézi hogy egyformák-e.

De lenne egy javaslatom, mivel a matrix meghajtáshoz nagyobb áram szükséges a jó láthatósághoz, érdemes lehet kiszervezni a led meghajtó lábakat külső ic-re, hogy ne terheld túl az AVR lábait.
Lehet használni shift regisztert (74164, 74595, stb.) vagy port bővítőt (mcp 23008, mcp 23016, pcf8574). Ha ragaszkodsz matrixhoz akkor lehet olyan meghajtó is (Max7219), vagy akár ingyen is hozzá lehet jutni ilyenekhez TM1628
De léteznek i2c-s 24 csatornás pwm képes led meghajtók is.
Ezekkel a cél ic-kel nem csak lábakat nyerhetsz az Arduinon, hanem a kód is egyszerűsödik, hiszen nem kell az matrix meghajtáshoz szükséges időzítésekkel vacakolni.

  1. const int ledCount = 10;    // the number of LEDs in the bar graph
  2.     int ledPins[] = {
  3.       2, 3, 4, 5, 6, 7, 8, 9, 10, 11
  4.     };
  5.   //  int inPin = 12;    // indító gomb
  6.  
  7.     byte veletlenszam;
  8.     byte A = 0;
  9.     byte B = 0;
  10.     byte C = 0;
  11.     byte Ido = 90;
  12.     byte dobporges =0;
  13.      
  14.      
  15.      
  16.     void setup() {
  17.       // loop over the pin array and set them all to output:
  18.       for (int thisLed = 0; thisLed < ledCount; thisLed++) {
  19.         pinMode(ledPins[thisLed], OUTPUT);
  20.       }
  21.       Serial.begin(9600);
  22.    //   pinMode(inPin, INPUT);    // pin 12 input
  23.     }
  24.      
  25.     void loop() {
  26.  
  27.     if (dobporges <= 10) { //csak 10-ig porog, de lehet egy változóba lementett véletlen szám is
  28.     veletlenszam = random(2,8);
  29.     A = veletlenszam;
  30.     //Serial.print("veletlenszam: ");
  31.     //Serial.print(veletlenszam);
  32.     }
  33.          
  34.     if (dobporges <= 20) { //csak 20-ig porog  
  35.     veletlenszam = random(2,8);
  36.     B= veletlenszam;
  37.   //  Serial.print("  B:");
  38.   //  Serial.print(B);
  39.     }
  40.      
  41.     if (dobporges <= 30) { //csak 30-ig porog  
  42.     veletlenszam = random(2,8);
  43.     C= veletlenszam;
  44.   //  Serial.print("  C:");
  45.   //  Serial.println(C);
  46.     }  
  47.  
  48.  
  49.     Serial.print("dobporges:");
  50.     Serial.print(dobporges);
  51.     Serial.print("  A:");
  52.     Serial.print(A);
  53.     Serial.print("  B:");
  54.     Serial.print(B);
  55.     Serial.print("  C:");
  56.     Serial.println(C);
  57.    
  58.  
  59.  if (dobporges == 30) { //csak 10-ig porog  
  60.       if (A == B && A==C){
  61.         Serial.println("NYERT");
  62.       }
  63.       else{
  64.         Serial.println("NEM NYERT");
  65.       }
  66.       delay(100000);// ide lehet betenni egy indítógombot
  67.     }  
  68.     else {
  69.       delay(Ido); // lassuló idot is be lehet állitani ha szükséges
  70.       }
  71.      
  72.   dobporges=dobporges+1 ;
  73.  
  74.     // mutltiplexelni csak A, B, C kell, ezt még ki kell dolgozni
  75.     digitalWrite(A, HIGH);
  76.     delay(Ido);                      
  77.     digitalWrite(A, LOW);
  78.    delay(Ido);                      
  79.      
  80.     digitalWrite(B, HIGH);
  81.     delay(Ido);                      
  82.     digitalWrite(B, LOW);
  83.     delay(Ido);                      
  84.      
  85.     digitalWrite(C, HIGH);
  86.     delay(Ido);                      
  87.     digitalWrite(C, LOW);
  88.     delay(Ido);                      
  89.  
  90.  if (dobporges <= 10) { //csak 10-ig porog
  91.      A=0;
  92.      B=0;
  93.      C=0;
  94.      }
  95.  if (dobporges <= 20) { //csak 10-ig porog
  96.  //    A=0;
  97.      B=0;
  98.      C=0;
  99.      }
  100.  
  101.     }
(#) sany válasza robis01 hozzászólására (») Máj 17, 2023 /
 
Köszi! Sokat fog segíteni.
IC-t nem szeretnék. A digiteket tranzisztorokon (BC550) keresztül vezérelem. A kijelző nem gyári, hanem minden egyes szegmens 4 db piros LED-ből épül fel. Előtét ellenállás, most 680 Ω-os. Külső tápfeszültség 5 V a kijelző tranzisztorainak. Így ha minden LED ki van vezérelve ( nincs rákötve az Arduinora), a labortáp szerint 100 mA vesz fel összesen. Így elég jó láthatóak.
A hozzászólás módosítva: Máj 17, 2023
(#) robis01 válasza SzilCsong hozzászólására (») Máj 18, 2023 / 1
 
Jó dolog az Arduino, én is szeretem, csak kicsit olyan mint a csajok bulikban. Dekoratívak, jól néznek ki, könnyen kezelhetőnek tűnnek, de amikor hazaviszed és elkezded megismerni rájössz hogy a felszín nem elég a boldogsághoz, kellene hozzá az összetett feladatokban való helytállás is.

Egy helyről van az összes panel?
Csak mert egy lehetséges ok:
Idézet:
„(2) *some boards contain counterfeit IC's * which do not have the correct product code when queried.”


Mások is írnak arról hogy nem eredetinél gondot okoz ha több egység van felfűzve egy SPI portra: spi problem

Tippem szerint a hamis más időzítésekkel dolgozhat mint az eredeti, vagy túl magas bemeneti kapacítása van, egy panel még nem okoz problémát, de kettő már hibát okoz. Meg lehetne próbálni felhúzó ellenállást tenni az SS lábra. Ha be tennél valami leválasztót, akár optókaput az SS portra, kiderülhet hogy a 2V melyik eszközből jön.

Jó lenne láthatóvá tenni a jeleket is valami logikai analizátorral (pl. Arduinot is támogató sigrok)

Javasolnám hogy próbáld ki más nyelven is (c, python, bascom, asm, stb. ) ha megoldható. Itt is vannak mintaprogramok: Bascom

Esetleg valami szimulátorban (SimulIde, wokwi, Proteus, stb.) is ki lehetne próbálni, ott is rá lehet tenni logikai analizátort ami megmutatná minek is kellene történnie.

Vagy ha van más két egyforma SPI-s valamilyen panelod, azzal is ki lehet próbálni hogy jól működik-e az SPI port az ARDUINO-n.
(#) SzilCsong válasza robis01 hozzászólására (») Máj 18, 2023 /
 
Idézet:
„Tippem szerint a hamis más időzítésekkel dolgozhat mint az eredeti, vagy túl magas bemeneti kapacítása van, egy panel még nem okoz problémát, de kettő már hibát okoz.”

ott lesz a megoldás, a mellékelt képen 3db mfrc, ha jobban megnézzük, 3 külömböző gyártás. a középsővel nem működik egyszerre a kettő, egyáltalán (ezzel próbáltam), a két szélsővel tud működni egyszerre a két olvasó és be is olvassa mindkettő spi módba.
(egyébként ez se mindig)
Szóval kelleni fog az ss vonalra ahogy írtad is, egy fel, vagy lehúzó ellenállás.
Köszi, ez jó tipp volt
A hozzászólás módosítva: Máj 18, 2023
(#) robis01 válasza sany hozzászólására (») Máj 18, 2023 /
 
Szívesen.
Lehet úgyis pörgetni hogy mindig ugyanaz szimbólum következik egymás után (mint amikor a dob pörög), a véletlen a pörgési időt határozza meg.

Az ic-nek az előnye sokkal egyszerűbb panelrajz is.

Ha jól értelmezem a 100mA keresztül halad a BC550-en. adatlap szerint ez a maximum amit elvisel. Nem szerencsés határértéken dolgoztatni a tranzisztort.
(#) sany válasza robis01 hozzászólására (») Máj 18, 2023 /
 
Egyelőre nem melegszenek. De majd kicserélem azokat, egy BD140-re. Azok majd bírják.
IC, IC legyen IC? Ha végképp nem sikerül a kijelzés, akkor lesz IC.
(#) Antennaman válasza pipi hozzászólására (») Máj 18, 2023 /
 
Szervusz Pipi,
Már csak egy .h fájlt hiányolt de addig küzdöttem, hogy valahova bemásoltam valamit és elkezdett végtelen listázásba fogni alul . Meddő küszködés lett így fogtam és mindent letöröltem az arduino librarie-ket is. Az a baj , hogy amikor újra telepítem ugyan olyan hibásan állítja be magát mint ami miatt letörlöm. Valamint amikor elkuszálok egy szkeccset akkor ha be is zárom nem egy tiszta lappal hanem ugyanazzal a zavarossal indul újra, hiába nyitnám meg az eredeti fájlt holott senki nem mondta , hogy mentse el a változásokat.
Később visszatérek ehhez a rádió projekthez csak regenerálódni kell ezek után!
(#) robis01 válasza SzilCsong hozzászólására (») Máj 18, 2023 /
 
Akkor jöhetnek az újabb tippek

Tovább fűzve a gondolatsort, jellemző az Arduino-ra és kiegészítő paneljaira a (hamisítványok, és olcsó árak mellett) zavarvédelem szinte teljes hiánya. Pláne az olyan kiegészítőknél, amik elektromágneses teret is létrehoznak maguk körül ez még rosszabb is lehet.

Érdemes lehet ezt a részt is körüljárni.

1. Lehet hogy túl közel vannak egymáshoz, és zavarják egymást: távolabbra kellene helyezni a panelokat egymástól.
2. Lehet hogy az elektromágneses hullámok által keltett áramok zavaró feszültség tüskéket okoznak a vezetékekben. Árnyékolt vezetékek használata megoldás lehet (árnyékolást csak egyik oldalt kell bekötni).
3. Kevés az áram a bemeneti kapacitások gyors feltöltéséhez: meg kell támogatni a jelvezetékeket valamilyen buffer ic-vel.
3. Ha zavar a jelvezetékeken továbbítódik: galvanikusan elválasztani a jelvezetékeket egymástól opto kapukkal, leválasztó ic-vel.
4. Ha zavar a tápfesz vezetékeken továbbítódik: minden panelt külön tápegységre kell kötni.
5. Lehet hogy veszik egymás jeleit:
a. szoftveres: le kell tiltani, vagy el kell küldeni aludni a nem használt modult
b. hardveres: le kell kapcsolni a nem használt panel áramforrását (NPN, FET, stb.)

Érdemes kis szünetet (10-100ms) is beiktatni a két panel használata között, hogy az éterben keltett zavarás is megszűnjön.
(#) sany válasza robis01 hozzászólására (») Máj 18, 2023 /
 
A kódod jó lett.

Megpróbáltam átadni az A,B,C-t legalább, csak olyan szinten, hogy valahogy kiírja a kijelző. Kiírja,de csak a C karaktert, mind a három digitre. Valahogy így gondoltam:

  1. //kijelzőre karakterek létrehozása
  2. byte Asz[1]={ A };
  3. byte Bsz[1]={ B };
  4. byte Csz[1]={ C };
  5.  
  6. //digit pinnek átadása  
  7. int digit1=digit[0];
  8. int digit2=digit[1];
  9. int digit3=digit[2];
  10.  
  11. //digitek kikapcsolása
  12. digitalWrite(digit1,HIGH);
  13. digitalWrite(digit2,HIGH);
  14. digitalWrite(digit3,HIGH);
  15.  
  16. aktivdigit++;
  17.  
  18.  //ha megvan az összes digit visszatérek az elsőre
  19.   if (aktivdigit >= 3) {
  20.     aktivdigit = 0;
  21. }
  22.  
  23.  
  24.  
  25. void egydigit() {
  26.   // A karakter kijelzése az aktuális digiten
  27.    
  28.     int d1 = bitRead(Asz[0],digit1);
  29.    
  30.    
  31. }
  32.  
  33. void egydigit2() {
  34.   // A karakter kijelzése az aktuális digiten
  35.  
  36.     int d2 = bitRead(Bsz[0], digit2);
  37.    
  38. }
  39.  
  40.  void egydigit3() {
  41.   // A karekter kijelzése az aktuális digiten
  42.     int d3 = bitRead(Csz[0],digit3);
  43.  
  44. }
  45.  
  46.  
  47.  
  48. switch (aktivdigit) {
  49.     case 0:
  50.      
  51.       digitalWrite(egydigit1(), HIGH);
  52.       msdelay(500);
  53.       break;
  54.     case 1:
  55.       egydigit2();
  56.       digitalWrite(egydigit2(), HIGH);
  57.       msdelay(500);
  58.       break;
  59.     case 2:
  60.       egydigit3();
  61.       digitalWrite(egydigit3(), HIGH);
  62.       msdelay(500);
  63.       break;
  64.  
  65.     default:
  66.     for (int i = 0; i < 7; i++) {
  67.     digitalWrite(segmentPins[i], LOW);
  68.  
  69.     msdelay(100);
  70.   }
  71.   }



Fogalmam nincs, hogy kellene. A digiteket kellene léptetni? Vagy használnom kellene Sevseg shift, eltolás könyvtárát, és úgy multiplexelni? Gondolkozok, "kamu" karakterekben is, amik csak mennek, és csak ha nyer akkor jelenne meg a három egyforma. Vagy a karakterek kombinációját megcsinálni, onnan olvasni? Nem tudom....

Ha nem sikerül multiplex, átmegyek Arduino mega-ra, aztán kivezetem a 3 x 7 kivezetést.
A hozzászólás módosítva: Máj 18, 2023
(#) Massawa válasza sany hozzászólására (») Máj 18, 2023 /
 
Valamit félreértesz, ha jol tudom az eredeti SevSeg vagy mi volt a neve annak az alprogramnak, az a feladata, hogy az adott bytetot kiirja a 7 szegmenses displayre multiplex modusban. Ez most hiányzik. Nem ismerem annyira a programot, de nincs kizárva, hogy csak a 0-9 ig tudja kiirni a számokat, azaz a nem szám karaktereket már nem tudja.
Ezt kellene elöbb végigzongoráznod, az eredeti programmal. Ha nem tudja kiirni a többi karaktert, akkor érdemes lenne abba a progiba belekotorni, vagy a program alapján irni egy uj SevSeGx verziot, ami elfogad minden byteot ami ki akarsz irni. ( azért 16 karakternél több nem biztos hogy kell).

Ha ezt tisztázod, akkor ha eljutsz pörgetéskor az adott véletlenhez. (A,B és C ) akkor ezt már a SevSegx-nek ki kell irnia.

Nejed most természetesen csak az utolso karaktert irja ki, mert nem definiáltad melyik karakter melyik displayre kerüljön.
Add hozzá az EN1, EN2, EN3 a 3 display bekapcsolása
És akkor az (EN1, A), (EN2, B), (EN3, C) kiirását kell a loopban állandoan ismételni. ( ez a MUX).


Mielött most valami mást tennél elöbb tisztázd a SevSeg müködését. Ha csak valoban a 0-9 számokat tudja kiiirni, akkor csinálj egy másik probát hogy a tömbbe csak ezt a 10 számot ird be. Ha igy megy a progi, akkor már van egy alapod és 000-999 ig fog menni a bandita. Természetesen akkor a kod elejére be kell vinni a SevSeg könyvtárat).

Ezután dönthetsz, vagy kiegészited a SevSeg programot a további 5-6 karakterrel, ajánlom az A,b,c,d,E, karaktereket ( ezeket egyszerü lesz beirni, de választhatsz mást is).
Ezután már mennie kell a kodnak.
Bocs nem tudok kodot irni, mert nincs itt a PC-m.
A hozzászólás módosítva: Máj 18, 2023
(#) sany válasza Massawa hozzászólására (») Máj 18, 2023 /
 
Idézet:
„Valamit félreértesz”

Kezdem elhinni, hogy csak pontos időzítéssel tudom majd előidézni, a fél karú rabló feelingét. És ez nem egyszerűen fog menni.

Azonban teljesen igazad van. A véletlen már megvan, csak finomítani kell. SevSegben lehet más karaktereket is kiírni. A SevSeg.cpp-ben előre meg vannak írva.
A hozzászólás módosítva: Máj 18, 2023
(#) Massawa válasza sany hozzászólására (») Máj 18, 2023 /
 
Akkor rakd vissza a SevSeg-t. De oda is be kell vinni, hogy melyik A,B,C értéket melyik displayre irod. Ez hiànyzik még.
Ha a kiirást a (for) hurokba irod be, ahol a pörgetések mennek, akkor a tartalom is változni fog, és ha megáll akkor már megvan az elsö változo, és azt fogja ismételni az elsö helyen.
Én az állapot helyett inkább egy “void kiirást” alprogramot irnák, ahol ki tudod irni a megfelelö helyre a 3 változot. Ezt az alprogramot kell a for hurokban minden ciklusban.
A hozzászólás módosítva: Máj 18, 2023
(#) sany válasza Massawa hozzászólására (») Máj 19, 2023 /
 
Még egy gond van vagy lesz. Függvénnyel (void-dal) vagy közvetlen a loop()-ba írjam majd? Mert a kijelzés, még mikro szekundumban is, lassabb lesz és ez függ attól is milyen számot, illetve milyen hozzárendelt karaktert generál.Tolja az időzítést. Ezt tapasztaltam, igaz nem véletlen számokkal, mert próbálkozok itt azért sutyiba. Persze először számok, aztán karakterek.

Ki fogom próbálni jobban belemélyedek a SevSegbe.
A hozzászólás módosítva: Máj 19, 2023
(#) robis01 válasza sany hozzászólására (») Máj 19, 2023 /
 
Elég lehet felhasználás előtt generálni egy véletlen karaktert, így memóriát takarítasz meg.

  1. veletlenszam = random(0,6);
  2.      bitSet(A, veletlenszam);
  3.      veletlenszam = random(0,6);
  4.      bitSet(A, veletlenszam);
  5.     veletlenszam = random(0,6);
  6.      bitSet(A, veletlenszam);
  7.      veletlenszam = random(0,6);
  8.  
  9. .
  10. .
  11. .
  12. .
  13. A=0
  14.      bitSet(A, veletlenszam);


Időzítésekre szerintem csak akkor van szükség ha te kezeled a matrix meghajtását, Sev.seg ezt maga végzi.

Ez a szimuláció használja a sev.seg -et. Látható hogyan épül fel a program.
(#) Massawa válasza sany hozzászólására (») Máj 19, 2023 /
 
A loopban van a pörgetés a for hurokban. A hurok végén minden ciklusban hivd meg a void kiirást. Azaz a for változo minden értékére egyszer legyen kiirás.
A void kiirásba betehetsz egy kis késleltetést is, hogy láthato legyen a kiirrt érték. Nem kell itt azért mikrosekundumokkal foglalkozni. Lassabban szebb hatást is kapsz. A szem kb 5 kiirást/sec tud még követni, ha gyorsabb, összeolvad a kép mint a moziban.
A hozzászólás módosítva: Máj 19, 2023
(#) robis01 válasza sany hozzászólására (») Máj 19, 2023 /
 
A minta kódot behelyezve wokwi -be futtatható a minta program.
De ahogy Massawa is írta érdemes lenne utána nézni sevseg-nek, mert ahogy nézem csak valamilyen karaktertáblázat (ASCII, UNICOD, stb,) szerint jeleníthet meg bármit is.

MEGA szerintem pazarlás erre a célra, de hát az ic-k le lettek szavazva
(#) sany válasza robis01 hozzászólására (») Máj 19, 2023 /
 
Már néztem ezt a minta programot. Jó ez is, ASCII nem baj. Byte-ot, hexet fogad pl. 0x01, stb. . Lassan fog pörögni.
Már elővettem a 74C595, de vissza is raktam a fiókba...
(#) hadhazik válasza hadhazik hozzászólására (») Máj 19, 2023 /
 
Kérdés megoldva, bocs hogy ilyen érdektelenséggel szennyeztem a topikot.
(#) sany válasza robis01 hozzászólására (») Máj 19, 2023 /
 
A minta kódban miért a setup()-ban adja át a stringet szerintettek? Ezt nem értem...
Következő: »»   798 / 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