Se afișează postările cu eticheta blink. Afișați toate postările
Se afișează postările cu eticheta blink. Afișați toate postările

duminică, 14 mai 2023

Placa de dezvoltare tip Arduino cu microcontroler LGT8F328P

    Am achizitionat o placa cu format Arduino Nano, ce are alt procesor: LGT8F328P si am facut un scurt test de functionare, clasicul clipit al ledului de pe placa.


   Microcontroller este produs de LogicGreen Technology si pare a fi o varianta imbunatatita a celebrului microcontroller Atmega 328P.
   Folosirea acestui LGT8F328P aduce cateva plusuri platformei Arduino Nano:
- este capabil sa ruleze la o frecventa de pana la 32MHz  
​- intrarile/iesirile GPIO pot fi configurate pentru 3,3V
- functioneaza la 16MHz pentru o tensiune de alimentare de 3,3V
- are cele 6 intrari analogice pe 12 biti (fata de 10 biti la ATmega 328P)
- are o iesire tip DAC pe 8 biti DAC
- 8 iesiri cu PWM
- memorie Flash: 32 kb
- memorie SRAM: 2kb
- memorie emulata ca EEPROM: 0K/1K/2K/4K/8K (impartita cu cea Flash, nu am incercat, dar clar pot apare diferente/probleme cu sketch-urile clasice)
- frecventa ceas: 1..16MHz (consumul scade la frecvente de lucru scazute)
   Se fabrica mai multe versiuni, pentru cea format Nano, pinii sunt:
  Revenind la chestii palpabile, pentru a incarca un program Arduino, trebuie sa instalam placa cu LGT8F328P, asa ca am urmat pasii de la github.com/dbuezas/lgt8fx 
   Intai am verificat daca am nevoie de un driver, dar nu a fost cazul, fiind vazut de Windows 10
  Am adaugat link-ul pentru a aparea placa in program:
apoi
rezultand aparitia optiunii
   Deoarece place vine cu programul de palpaire la o secunda a ledului, am modificat rapid  programul Blink sa am 2 clipiri rapide la o secunda
   Puteti folosi programul blink_strobo_1.ino, care e similar, iar functionare e ca in filmuletele:

duminică, 28 august 2022

Lumini aprinse alternativ sau cu aprindere / stingere lenta

    Pornind de la o solicitare de a reproduce luminile de la o cale ferata cu lumini de avertizare cu aprindere si stingere lenta, cum sunt cele din filmuletul 2nd Avenue Railroad Crossing, Clanton, AL

pentru a adaga unor bariere de diorame, cum prezentasem in articolul Railway Crossing Multi Track Two Way, am zis sa fac un mic proiectel in care sa apara diferentierea intre aprindere cu intermitenta a 2 leduri si apoi cu intarziere la aprindere, respectiv stingere, selectia facand-o dintr-un buton fara retinere.
   Schema de test a fost una simpla (ledurile sunt legate la iesiri cu posibilitate PWM):
   La pornire, pe cele 2 iesiri este semnal cu factor de umplere variabil (PWM) de la 0 la 100%, mai precis de la 0 la 255... cand variabila este 0, ledul este stins, cand este 255 este aprins maxim... pe o iesire este valoare brightness, iar pe cealalta 255-brightness, deci va fi un led in contratimp cu celalalt... daca se apasa butonul pentru scurt timp se trece la aprinderea intermitenta tip circuit bistabil astabil (un led aprins, unul stins).
    Programul este unul simplu, realizat din combinarea celor din exemplele programului Arduino IDE: blink_vs_fade_1a.ino
    Am realizat 2 filmulete:
   Ulterior, am schimbat variabilele (pasii de crestere/descrestere intensitate luminasa, timpii intre modificari, etc), programul devenind blink_vs_fade_1b.ino si cum am inca 2 filmulete:
      Ulterior, am dat de o placa de dezvoltare MH-Tiny cu ATtiny88 si am zis sa vad daca merge... 
am gasit ca are doar 2 iesiri pentru control PWM (suficiente pentru proiectul asta), respectiv D9 si D10 asa ca am conectat cele 2 leduri acolo si butonul fara retinere a ramas la D2.
  Programul modificat este blink_vs_fade_1a1.ino (simular cu anterioarele), asa ca am incarcat 2 filmulete cu placa MH-Tiny:

31.08.2022
   Am explicat in articolul in care am implementat aceste lumini cu aprindere/stingere enta (Railway Crossing Multi Track Two Way), dar o sa  fac si aici:
   Sistemul de aprindere cu intensitate variabila este cel numit PWM, care are valoare de la 0 la 255 (led stins, respectiv aprins la maxim).
  In programele scrise si testate, cele 3 variabile de baza sunt:
care vor fi explicate pentru un led (numit LED3):
Led-ul este stins si dupa perioada de pauza (variabila time_to_stop = 200ms), intensitatealuminasa (brightess) incepe sa creasca valoarea intensitatii cu pas de 1 (fadeAmount = 1) la fiecare 2ms (fade_delay = 2), pana la maxim (PWM = 255),dupa care urmeaza o pauza de 200ms, apoi intensitatea luminoasa scade cu pas de 1 la fiecare 2ms, pana la 0, dupa care urmeaza pauza de 200ms si procesul se repeta.
Led-ul celalalt (notat in poza cu LED 3)  este in contratimp (255-brightness)
comparativ, aprinderea cu intermitenta a ledurilor este ca in figura urmtoare, unde acestea aapr cu LED1 si LED2:

luni, 20 aprilie 2020

Clipire led fara comanda "delay"

   O solutie mai simpla de aprinde led cu intermitenta sau a afisa un text cu intermitenta se poate face cu functia millis(), dar nu cum e prezentat in exemplul aplicatiei Arduino IDE,
 ci mult mai simplu.
    Ne folosim de functia millis() care numara numarul de milisecunde de cand e pornita placa Arduino (de fapt microcontrolerul de pe ea). O impatim la 1000, de exemplu sa stim in secunde. Daca secundele sunt numar impar aprindem led-ul, iar daca e numar par il stingem.
   Schema este simpla
   Am doua versiuni de program:
- mai multe linii, blink_wo_delay.ino
- mai putine linii de cod, blink_wo_delay2.ino
    Am facut si 2 filmulete:
- cu comentarii in romana
- cu comentarii in engleza