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   749 / 852
(#) Elektro.on válasza Vacok hozzászólására (») Okt 18, 2022 /
 
Én ezt úgy oldanám meg, hogy a kapcsolt adja a tápot az egésznek. Mikor megy a ventillátor a pára tartalom fuggvényében , akkor biztosít magának egy öntartást az állandó tápról arra az esetre ha közben a villanyt lekapcsolnák. Ezt bontaná két perc után.
(#) Lamprologus válasza Vacok hozzászólására (») Okt 18, 2022 / 1
 
Esetleg egy fényérzékeny alkatrésszel meg lehetne oldani a világítás figyelését ... Talán kevesebb alkatrész ( pl egy foto tranzisztor + ellenállás), és nem kell 230V-al bajlódni.
(#) Massawa válasza Vacok hozzászólására (») Okt 18, 2022 /
 
Nem tudjuk mennyit akarsz rá költeni, de kb egy Ardunio europai árától joval olcsobban készen kapni pl egy CS3-16 idözitö kapcsolot, ami szinte mindent tud amit akarsz, csak a páraérzékelést kell megoldani. A google egy csomo találatot dob ki a CS3-16-ra. Nálam egy ilyen, igaz más célokra már 12 éve gond nélkül müködik.
(#) Régi motoros hozzászólása Okt 19, 2022 /
 
Helló!

Tudtok mutatni olyan projektet, amiben Attiny24/44/84 a CPU és SPI vezetéken ST7735 a kijelző?
Hiába írom be ezt a két paramétert, valahogy mindig csak arduinot talál a kijelzővel,
vagy attinyt I2C kijelzővel...

Esetleg ezzel a libbel valakinek volt már dolga? Azt írja, kb 15x gyorsabb mint az arduino shiftOut().
Sajna az example -jében nincs ST7735 kijelzős példa.
A hozzászólás módosítva: Okt 19, 2022
(#) asch válasza Régi motoros hozzászólására (») Okt 19, 2022 /
 
Szerintem azért nincsen ilyen példa, mert egy teljes képernyő még monokrómban is 2560 bájt a felbontás miatt (ha jól számoltam). Tehát azt nem tudod megcsinálni, hogy memóriában előkészíted a képet és kiteszed, hanem közvetlenül rajta kell rajzolni. Az meg bonyolultabb szerintem.

Az ATTiny program memóriája is nagyon kicsi. Csináltam egy betű rajzoló libet, abban is majdnem 2kB csak a betűk képe: https://github.com/rizsi/playing_with_MCUs/blob/master/libraries/ri...ters.h Tehát beférne az ATTiny24-be, de nem maradna sok hely a programnak. A nagyobbakba befér simán. Tehát nem lehetetlen megvalósítani a rajzolást ezekkel, de nem is egyszerű. A kishiftelés lesz a legkisebb gondod.
A hozzászólás módosítva: Okt 19, 2022
(#) asch válasza Régi motoros hozzászólására (») Okt 19, 2022 /
 
Ránéztem a könyvtárra is: szerintem koncepcionálisan hülyeség letiltani az interruptokat küldés közben, mert az SPI-nek pont az a lényege, hogy a küldő határozza meg az órajelet, nincs szükségünk rá, hogy fixen tartsuk. Ha interruptos dolgot is használsz, akkor zavaró lehet ez a letiltogatás.

Éppen ezért a szoftveres kishiftelés is teljesen jó megoldás, és közben végig bekapcsolva lehetnek az interruptok. A libben SPI írás közben le vannak tiltva az interruptok és "kézzel" lökögeti tovább a clockot, ebből következően pontosan annyira lesz gyors, mintha szoftveres kishiftelést csinált volna. Persze csak akkor lenne ugyanilyen gyors a szoftveres SPI master, ha low level írja meg, nem digitalWrite-tal, hanem a PORTA/PORTB adott bitjét állítgatva. Úgyhogy én nem ezt a könyvtárat használnám, felesleges.

Erre csak ránéztem, de sokkal értelmesebbnek tűnik: https://github.com/tessel/avr-usi-spi/blob/master/spi_via_usi_driver.c
A hozzászólás módosítva: Okt 19, 2022
(#) Régi motoros válasza asch hozzászólására (») Okt 19, 2022 /
 
Még jómagam sem tudom, mivel lenne érdemes. Annyit tudok, hogy van fiókban Attiny44, és avval akarnék összekalapálni egy egyszerű feszültségszint jelzőt. A kijelzés egy színes akku piktogram lenne, ami a töltöttségi szinttel arányosan merül, és változik a színe kb úgy, mint a laptop tálcán.
A kijelző meg egy ilyen lenne...

(Megszakítás egyébként nem kell).

Nekem csak a "15x gyorsabb" opción akadt meg a szemem, nem ragaszkodom ahhoz a libhez.
Bármi jó, amivel meg lehet oldani a vázolt feladatot.
(#) Jonni válasza Régi motoros hozzászólására (») Okt 19, 2022 /
 
Ha mem ragaszkodsz az Attiny44-hez akkor inkább arduino nano-t használj.


Kicsi, az usb csatlakozás miatt sokkal kényelmesbb a használata/programozása, és van elég flash
(#) asch válasza Jonni hozzászólására (») Okt 19, 2022 /
 
Színes kép az Arduino Nano-ba sem fér be. Ha meg úgysem fér be a memóriába a kép, akkor ésszerűbb megoldás anélkül megoldani a rajzolást közvetlenül a célra rajzolva.

Van a kijelzőhöz Adafruit által írt library itt: https://github.com/adafruit/Adafruit-ST7735-Library
De ez az Adafruit GFX-re épít, ami pedig memóriában tarja a képet, lásd ebben a buffer változót: https://github.com/adafruit/Adafruit-GFX-Library/blob/master/Adafru...FX.cpp
Amit ráadásul malloc-cal allokál, nem is lehet statikusan. Ez tehát nem fog működni ATTiny-n az tuti.

Én úgy csinálnám, hogy:

* Az Adafruit libből "lelopnám" az inicializáló szekvenciát és a pixel feltöltés módját (persze lehetne adatlan alapján is, de egyszerűbb kimásolni)
* A képet úgy rajzolnám ki, hogy végigszaladok az összes pixelen, és ott helyben eldönteném, hogy milyen színű legyen. Tehát nem tárolnék semmit RAM-ban. Első körben ha x<töltöttség, akkor egyik szín, ha nagyobb akkor másik szín. Tehát egy téglalap jelezné a töltöttséget
* Ha már idáig is eljutottam, akkor kisebbre venném a bitkolbászt és köré rajzolnám az akkumulátor piktogrammot kézzel leprogramozva kizárólag téglalap rajzolással.

Ez bőven beleférne egy ATTiny-be is, de sajnos elég sokat kell programozni hozzá, nincs készen levehető megoldás.
(#) Régi motoros válasza asch hozzászólására (») Okt 19, 2022 /
 
Há ha *.bmp nem fér be, jó nekem a sima rajzolás is.
Ezt találtam csak még a példaprogramot nem látom, lehet átsiklottam felette...
(#) asch válasza Régi motoros hozzászólására (») Okt 20, 2022 /
 
Ez ránézésre nagyon ügyes lib. Pont ilyenre gondoltam volna, hogy ilyet kellene csinálni, és lám ez is készen van már.
(#) Régi motoros válasza asch hozzászólására (») Okt 20, 2022 /
 
Kezdem is pedzegetni... De kissé zavar, hogy az egész egy fájlban van.
Próbáltam a void setup() előtti részt kivágni és egy külön fájlba elhelyezni TinnyGFX.c néven.

Aztán az *.ino fájl elejére betettem egy #include "TinnyGFX.c" sort, amit el is fogad ugyan,
de a *.c fájlban hibát jelez.

"TinnyGFX.c:92:7: error: unknown type name 'uint8_t'..." meg még egy rakás mást is.

Hogy lehetne a setup függvény előtti rész kiinportálni egy másik fájlba?
(#) Elektro.on válasza Régi motoros hozzászólására (») Okt 20, 2022 /
 
Mi került abba a*.c file-ba?
Mutatsz kódot?
(#) Régi motoros válasza Elektro.on hozzászólására (») Okt 20, 2022 /
 
Csak simán kivágtam az eredeti *.ino fájlból a setup előtti rész, és beillesztettem a *.c fájlba...
A cél csak annyi volna, hogy a "sallang" ne a program fájlba legyen, úgy áttekinthetőbb a program írás közben, pl ha az elejére tekerek, nem kell keresgélni, mert rögtön a képernyő tetején a saját kódom kezdődne.

  1. #include "TinnyGFX.c"
  2. #include <TinnyGFX.c>


Ha idézőjelekkel írom akkor dobja a hibát,
ha kacsacsőrös zárójelbe, akkor meg "TinnyGFX.c No such file or directory",
holott ugyan abba a mappában vannak.
A hozzászólás módosítva: Okt 20, 2022
(#) Régi motoros válasza Régi motoros hozzászólására (») Okt 20, 2022 / 1
 
Közben meg is találtam a problémát...
Először is, a kacsacsőrös zárójelbe tett fájlokat csak a rendszer mappákban keresi,
egyedi mappában nem. Tehát ha van egy projekt mappám, és abban van az *.ino és *.c fájl,
nem találja meg az include -olni kívánt *.c fájlt, hiába egymás mellet van a két fájl.

Erre megoldás az, hogy kacsacsőr helyett idézőjeleket használunk, ekkor már látja a fájlt az *.ino fájl mellett is, de valamiért hibát dobott.
Hát a nagy helyzet az, hogy a *.c fájl kiterjesztését átírtam *.h -ra, úgy meg megette.
Tehát csak *.h kiterjesztéssel tudja behúzni a másik fájlban szereplő kódot rendesen.

No így mostmár nekikezdhetek a program megírásának is...
A hozzászólás módosítva: Okt 20, 2022
(#) sargarigo válasza Régi motoros hozzászólására (») Okt 20, 2022 / 2
 
Akkor a témához kapcsolódik az is, hogy ha elkezded szétszedni a forrást különböző fájlokba, előbb utóbb belefutsz abba is, hogy hiába írtad le valahova egy változódat vagy függvényedet, mégsem találja!
Ennek az az oka, hogy minden a mappában szereplő forrásfájlt egyetlen nagy egészként kezel az arduino. Csak szerencsétlennek fogalma sincs hogy milyen sorrendben kellene összeillesztenie.
Az arduino a c-ből örökölt egy csomó mindent, többek között a *.h fájl támogatását is.
Én úgy szoktam széjjel darabolni a dolgaimat, hogy van egy fő programfájl, ami tartalmazza a setup(), a loop() függvényeket, valamint az elején az include "valami.h" sorokat. Ennek a fő programfájlnak a neve nagybetűvel kezdődik, a többi minden más meg kicsivel. Így garantálod, hogy ez fog először befordítódni, a többi majd csak ez után. A *.h fájlok define sorokkal vannak vezérelve, hogy csak egyszer, de pontosan egyszer legyenek figyelembe véve, akárhányszor is hivatkozunk rájuk.
  1. /* fájlnév: motor.h */
  2.  
  3. #ifndef _MOTOR_H
  4. #define _MOTOR_H
  5. //ide jöhetnek a motor változói, konstasnsok, stb
  6. // ide jöhetnek az eljárások, függvények prototípusai, amik a motorhoz kellenek
  7. void initMotor(); // csak prototípus, nincs tényleges kód
  8. #endif


A define sorok miatt nem lesz ismétlődés, akárhányszor is include-oljuk be. A *.h fájlokban nem illik tényleges programsorokat elhelyezni (bár működni fog), hanem csak a prototípusok gyűjtésére szolgál. Ez azt jelenti, hogy ha a motor.ino fájlban van egy void initMotor() eljárás, akkor a *.h fájlba ez kerül: void initMotor();. És ennyi. Nincs több. Figyelem, pontosvessző a végén! Mostantól a programod tetszőleges forrásfájljából meg tudod hívni, elég a fájl elején az include "motor.h" részletet beírni.
  1. /* fájlnév: Dronefw.ino főprogram */
  2. #include "motor.h"
  3.  
  4. void setup()
  5. {
  6.  initMotor();
  7.  // ...
  8. }
  9.  
  10. void loop()
  11. {
  12.  // ...
  13. }


  1. /* fájlnév: motor.ino */
  2. /*
  3. * Valójában itt van minden ami a motorral kapcsolatos, még sincs szem előtt
  4. */
  5. #include "motor.h"
  6.  
  7. void initMotor()
  8. {
  9.  // most már mehet a motor
  10. }


(Nekem ez a nagybetűs dolog amúgy úgy működött, hogy pl zSlave volt a főprogram, a többi meg csak sima kisbetűs. de azért próbáld ki úgy is, lehet hogy fordító függő. Csak a teljesség kedvéért )
A hozzászólás módosítva: Okt 20, 2022
(#) Régi motoros válasza sargarigo hozzászólására (») Okt 20, 2022 /
 
Annyira azért nem szedem szét, csak az elejét tettem ki egy külön fájlba,
ami a grafika kezeléséhez tartozik, ez a TinnyGFX.h fájl.

A Program.ino meg mellette van ugyanazon projekt mappában, és a legelső sora az importálás.
Aztán néhány define, láb elnevezés, változók létrehozása, és utána setup és loop rész:
  1. #include "TinnyGFX.h"
  2. #define FwDate "2022.10.20"
  3. #define FwVer "0.1"
  4. const int BattPin = 1;
  5. float Voltage = 0;
  6. void setup()...
  7. void loop()...

Ez így tudtommal egyszer fordítódik be. Tehát ha minden igaz, itt csak egy sorrend létezik,
első a TinnyGFX.h fájl, aztán a *.ino és nincs tovább.
Ha másik projekthez akarok ugyanilyen kijelzőt és cpu-t használni, akkor csak átmásolom egy másik projekt mappába a TinnyGFX.h fájlt, és mellé ugyanígy létrehozom a program.ino fájlt.

Viszont a példában az utolsó sort nem értem:
  1. void loop ()
  2. {
  3.   BarChart();
  4.   //Waterfall();
  5.   for (;;);
  6. }

Hogy ez mi a fenét csinál...
Mármint az utolsó utasítás 5. sor, (nem az előtte lévő függvények)...
A hozzászólás módosítva: Okt 20, 2022
(#) cua válasza Régi motoros hozzászólására (») Okt 20, 2022 /
 
  1. for (;;);

Infinite loop. Soha be nem fejezodo ciklus, magyarul itt megall a program( es velhetoen a hatterben megszakitasra var).
(#) Régi motoros válasza cua hozzászólására (») Okt 20, 2022 /
 
Tehát ha nincs semmilyen megszakítás, akkor megfagy az egész? Ha jön valami, akkor meg kezdi elölről?
A hozzászólás módosítva: Okt 20, 2022
(#) pipi válasza Régi motoros hozzászólására (») Okt 20, 2022 / 1
 
Nyilván a megszakításra végrehajtja a megszakítás rutint és "folytatja" a végtelen üres for-t,
ugyanaz mint a while(1);
A loop elejére nem megy vissza soha
(#) cua válasza Régi motoros hozzászólására (») Okt 20, 2022 / 1
 
Nem fagy meg, csak szaladgal egy vegtelen ciklusban. Ha nincs megszakitas, akkor semmi 'lathato', hasznos dolog nem tortenik.
Alapvetoan maga a design is rossz. Ha az a cel, hogy a BarChart() funkcio csak egyszer fusson le es utana varjon megszakitasra a mikrovezerlo, akkor a BarChart() hivasanak a setup()-ban kellene lennie es a loop() pedig uresen futkarozna. (kerdes mi van a BarChart funkcioban)
Ez mondjuk nem feltelen hiba, csak nem elegans.
(#) Régi motoros válasza pipi hozzászólására (») Okt 21, 2022 /
 
Jól van, akkor értem...
(#) Régi motoros válasza cua hozzászólására (») Okt 21, 2022 /
 
Gondolom azért tette oda a gazdája, mert csak annyi volt a "feladat" hogy bemutassa a kijelző kezelését. Egyszer lefut(nak) a függvény(ek), aztán nincs más feladat tulajdonképpen.
A programozó aki használni szeretné, úgyis kitörli azt a két függvényt meg a for ciklust,
és beírja majd a saját kódját, mint ahogyan én is.

Ui.: Amúgy a "megfagyást" csak képletesen értettem, az nem volt világos, hogy akkor visszamegy e a loop elejére valaha is, de akkor nem. Magyarán beleragad a for ciklusba.

De ha jól értem, akkor az a zárójelben lévő két pontosvessző, egy paraméter nélküli for ciklus akar lenni. Azért volt furcsa, mert sose láttam még ezt a megoldást.
A hozzászólás módosítva: Okt 21, 2022
(#) cua válasza Régi motoros hozzászólására (») Okt 21, 2022 / 1
 
Itt egy picit hosszabb magyarazat errol a megoldasrol.
(#) b_zoli válasza Kera_Will hozzászólására (») Okt 21, 2022 /
 
Köszi, már megvan. Az első kód kinyerése fél nap volt. A másodiké másfél óra A továbbiaké 15-15 perc. Már megvan minden kód, és gombnyomásra ki is adja a kimeneten, a redőnyök szépen mennek le-fel. Csak most eljött az optimalizálás ideje, hogy ne kelljen mind a 18 kódot (daramonként 200 sor) minden alkalommal beírni. Jó lenne valami hivatkozással meghívni a kódsorozatokat. Most ezen szenvedek. Már zsong a fejem, de még mindig nem értem, hogy hogyan. A .h, és a .cpp fülekkel próbálkozom....... eddig nem sok sikerrel...
(#) sargarigo válasza b_zoli hozzászólására (») Okt 21, 2022 /
 
Írd le mi a gondod, szerintem találunk megoldást!
(#) b_zoli válasza sargarigo hozzászólására (») Okt 21, 2022 /
 
Először is köszönöm.
A program amit írtam 17-224-es sorig egy kód. Ha a kimeneten ezt adom ki a lábon lévő jeladó leengedi a redőnyömet. Van ennek felfelé kódja is, és van össz. 9 ilyen redőnyöm. A stop jel nem kell bár az is van. Szóval arra gondoltam, hogy ezekre a kódokra hivatkoznék a
for(int counter = 0; counter < 12; counter++) { sor után. Mivel több nanot kell telepítenem, a hatótáv miatt lenne egy egyszer megírt adatbázis, ahonnan csak kiválasztom milyen feltétel után mit csináljon, (vagy mint csináljanak) a redőnyök. pl lábra érkező 1-es jelszintre leenged két különböző redőnyt. Vagy négyet. Az eső szenzorom (mert az lesz) eső érzékelés alkalmával logikai 1-et fog adni 3-4mp-re. Azért kellene adatbázisba tenni, mert a későbbiekben bonyolítanám foto ellenállással, mint feltétel, meg még nem tudom mivel. Evés közbe jön meg az étvágy. És ha már tudnák hivatkozni a jelekre nem kellene mindig leírni, és nem foglalna el annyi helyet. Persze ha nagyon penge lennék, akkor csak egyeseket, meg a nullákat kéne beírnom, és a progi behelyettesítené az időket hozzá, mivel a logikai szintek egyforma nullákat, és egyforma egyeseket tartalmaz. Kivéve persze az első pár szinkron részt. Ez így érthető volt? Vagy nem sikerült jól megfogalmaznom....
(#) Régi motoros válasza b_zoli hozzászólására (») Okt 21, 2022 /
 
Első körben én úgy próbálkoznék, hogy az 1 és 0 értéket betenném egy egy függvénybe,
így csak egyszer kell leírni. Aztán annyiszor hívod meg, ahány 0 és ahány 1 kell...

Második lépcsőben akár egy egész kódsorozatot is betehetsz egy függvénybe, ahány féle kódsorozatod van, annyi függvényt kell megírni, és amikor adni kell, csak egyszer kell meghívni.
A hozzászólás módosítva: Okt 21, 2022
(#) Kera_Will válasza b_zoli hozzászólására (») Okt 21, 2022 /
 
Ez hasonló mint amikor távíróadó kódolót írtam .
Ott a teljes morse ABC levolt fektetve egy "táblába" Az adott betűhöz tartozott egy hexa érték.
A betűk morzejeleiből lett képezve.
Ahol Tá volt ott 1 szerepelt, ahol Ti ott 0 ... igaz kellett 1 stop bit is ... az nem más volt mint az utolsó karakter 1-es. Ez azért kellett mert a morze jelek változó hosszúak 1 és akár 7 rövid hosszú jelből állhatnak. A lényeg az volt hogy mindig balra léptettem a változót.
A baloldali legelső bitet ellenőriztem és ha 0 akkor rövid időzítő függvényt hívtam meg ha meg 1 volt akkor a hosszút.
A végjel a 8016 volt mert a végjel bájt a 100000002 alakú volt mindig.

Neked is ezt kell tenni.
Igaz neked 40 bit hosszú (avagy amennyiből állnak)a mintáid 100110... stb
Akkor duplaword vagy nagyobb tipusú változód lesz inkább a végére záró 0-kat vagy 1-ket írsz.
De mivel fixek a minták méretei így fix számú balra / jobbra shiftelést kell végezned rajta.
(morze esetén változó méretű minták voltak)
Az aktuális bit értékét eldönteni hogy 0 vagy 1 eldönthető AND művelet bit maszkolással vagy set/reset eljárással tudod.
  1. valtozo  = 11001101;
  2. bitmask = 00010000;
  3. valtozo4bit1
  4.  
  5. //valtozo negyedik bitje 1 / 0 eldöntése
  6.  
  7. valtozo4bit1 = valtozo AND bitmask
  8.  11011101
  9.  00010000   and
  10.  00010000
  11.  
  12. //ezt tetszőleges bit pozícióban elhelyezheted a maskban az egyeseket.
A hozzászólás módosítva: Okt 21, 2022
(#) Kera_Will válasza b_zoli hozzászólására (») Okt 21, 2022 /
 
ha használod a Kód gombot akkor egyből ide a hozzászólás dobozába is szépen tagoltan be tud kerülni az forráskódod :

  1. int counter = 0;
  2.  
  3. void setup()
  4. {
  5. pinMode(11, INPUT);
  6. pinMode(12, OUTPUT);
  7. Serial.begin(9600);
  8. }
  9.  
  10. void loop()
  11. {
  12.   int ButtonMeasure = digitalRead(11);
  13.    if (ButtonMeasure == 0)
  14.     {
  15.      for(int counter = 0; counter < 12; counter++)
  16.      {
  17.       digitalWrite(12, LOW);   // Sync signal
  18.       delayMicroseconds(7400);
  19.       digitalWrite(12, HIGH);
  20.       delayMicroseconds(4800);
  21.       digitalWrite(12, LOW);
  22.       delayMicroseconds(1500);
  23.      
  24.       //Eddig volt a szinkron jel
  25.      
  26.       digitalWrite(12, HIGH);  //1
  27.       delayMicroseconds(700);
  28.       digitalWrite(12, LOW);
  29.       delayMicroseconds(390);
  30.  
  31.       digitalWrite(12, HIGH);  //1
  32.       delayMicroseconds(700);
  33.       digitalWrite(12, LOW);
  34.       delayMicroseconds(400);
  35.  
  36.       digitalWrite(12, HIGH);  //0
  37.       delayMicroseconds(340);
  38.       digitalWrite(12, LOW);
  39.       delayMicroseconds(740);
  40.  
  41.       digitalWrite(12, HIGH);  //0
  42.       delayMicroseconds(340);
  43.       digitalWrite(12, LOW);
  44.       delayMicroseconds(740);
  45.  
  46.       digitalWrite(12, HIGH);  //1
  47.       delayMicroseconds(700);
  48.       digitalWrite(12, LOW);
  49.       delayMicroseconds(390);
  50.  
  51.       digitalWrite(12, HIGH);  //1
  52.       delayMicroseconds(700);
  53.       digitalWrite(12, LOW);
  54.       delayMicroseconds(400);
  55.  
  56.       digitalWrite(12, HIGH);  //0
  57.       delayMicroseconds(340);
  58.       digitalWrite(12, LOW);
  59.       delayMicroseconds(740);
  60.  
  61.       digitalWrite(12, HIGH);  //0
  62.       delayMicroseconds(340);
  63.       digitalWrite(12, LOW);
  64.       delayMicroseconds(740);
  65.  
  66.       digitalWrite(12, HIGH);  //0
  67.       delayMicroseconds(340);
  68.       digitalWrite(12, LOW);
  69.       delayMicroseconds(740);
  70.  
  71.       digitalWrite(12, HIGH);  //1
  72.       delayMicroseconds(700);
  73.       digitalWrite(12, LOW);
  74.       delayMicroseconds(380);
  75.  
  76.       digitalWrite(12, HIGH);  //1
  77.       delayMicroseconds(700);
  78.       digitalWrite(12, LOW);
  79.       delayMicroseconds(380);
  80.  
  81.       digitalWrite(12, HIGH);  //1
  82.       delayMicroseconds(700);
  83.       digitalWrite(12, LOW);
  84.       delayMicroseconds(380);
  85.  
  86.       digitalWrite(12, HIGH);  //1
  87.       delayMicroseconds(700);
  88.       digitalWrite(12, LOW);
  89.       delayMicroseconds(380);
  90.  
  91.       digitalWrite(12, HIGH);  //0
  92.       delayMicroseconds(320);
  93.       digitalWrite(12, LOW);
  94.       delayMicroseconds(740);
  95.  
  96.       digitalWrite(12, HIGH);  //0
  97.       delayMicroseconds(320);
  98.       digitalWrite(12, LOW);
  99.       delayMicroseconds(740);
  100.  
  101.       digitalWrite(12, HIGH);  //1
  102.       delayMicroseconds(700);
  103.       digitalWrite(12, LOW);
  104.       delayMicroseconds(380);
  105.  
  106.       digitalWrite(12, HIGH);  //1
  107.       delayMicroseconds(700);
  108.       digitalWrite(12, LOW);
  109.       delayMicroseconds(380);
  110.  
  111.       digitalWrite(12, HIGH);  //1
  112.       delayMicroseconds(700);
  113.       digitalWrite(12, LOW);
  114.       delayMicroseconds(380);
  115.  
  116.       digitalWrite(12, HIGH);  //0
  117.       delayMicroseconds(320);
  118.       digitalWrite(12, LOW);
  119.       delayMicroseconds(740);
  120.  
  121.       digitalWrite(12, HIGH);  //1
  122.       delayMicroseconds(700);
  123.       digitalWrite(12, LOW);
  124.       delayMicroseconds(380);
  125.  
  126.       digitalWrite(12, HIGH);  //1
  127.       delayMicroseconds(700);
  128.       digitalWrite(12, LOW);
  129.       delayMicroseconds(380);
  130.  
  131.       digitalWrite(12, HIGH);  //1
  132.       delayMicroseconds(700);
  133.       digitalWrite(12, LOW);
  134.       delayMicroseconds(380);
  135.  
  136.       digitalWrite(12, HIGH);  //0
  137.       delayMicroseconds(320);
  138.       digitalWrite(12, LOW);
  139.       delayMicroseconds(740);
  140.  
  141.       digitalWrite(12, HIGH);  //0
  142.       delayMicroseconds(320);
  143.       digitalWrite(12, LOW);
  144.       delayMicroseconds(740);
  145.  
  146.       digitalWrite(12, HIGH);  //0
  147.       delayMicroseconds(320);
  148.       digitalWrite(12, LOW);
  149.       delayMicroseconds(740);
  150.  
  151.       digitalWrite(12, HIGH);  //0
  152.       delayMicroseconds(320);
  153.       digitalWrite(12, LOW);
  154.       delayMicroseconds(740);
  155.  
  156.       digitalWrite(12, HIGH);  //0
  157.       delayMicroseconds(320);
  158.       digitalWrite(12, LOW);
  159.       delayMicroseconds(740);
  160.  
  161.       digitalWrite(12, HIGH);  //0
  162.       delayMicroseconds(320);
  163.       digitalWrite(12, LOW);
  164.       delayMicroseconds(740);
  165.  
  166.       digitalWrite(12, HIGH);  //0
  167.       delayMicroseconds(320);
  168.       digitalWrite(12, LOW);
  169.       delayMicroseconds(740);
  170.  
  171.       digitalWrite(12, HIGH);  //1
  172.       delayMicroseconds(700);
  173.       digitalWrite(12, LOW);
  174.       delayMicroseconds(340);
  175.  
  176.       digitalWrite(12, HIGH);  //0
  177.       delayMicroseconds(320);
  178.       digitalWrite(12, LOW);
  179.       delayMicroseconds(740);
  180.  
  181.       digitalWrite(12, HIGH);  //0
  182.       delayMicroseconds(340);
  183.       digitalWrite(12, LOW);
  184.       delayMicroseconds(740);
  185.  
  186.       digitalWrite(12, HIGH);  //0
  187.       delayMicroseconds(320);
  188.       digitalWrite(12, LOW);
  189.       delayMicroseconds(740);
  190.  
  191.       digitalWrite(12, HIGH);  //0
  192.       delayMicroseconds(320);
  193.       digitalWrite(12, LOW);
  194.       delayMicroseconds(740);
  195.  
  196.       digitalWrite(12, HIGH);  //1
  197.       delayMicroseconds(700);
  198.       digitalWrite(12, LOW);
  199.       delayMicroseconds(390);
  200.  
  201.       digitalWrite(12, HIGH);  //1
  202.       delayMicroseconds(700);
  203.       digitalWrite(12, LOW);
  204.       delayMicroseconds(400);
  205.  
  206.       digitalWrite(12, HIGH);  //0
  207.       delayMicroseconds(340);
  208.       digitalWrite(12, LOW);
  209.       delayMicroseconds(740);
  210.  
  211.       digitalWrite(12, HIGH);  //0
  212.       delayMicroseconds(340);
  213.       digitalWrite(12, LOW);
  214.       delayMicroseconds(740);
  215.  
  216.       digitalWrite(12, HIGH);  //1
  217.       delayMicroseconds(700);
  218.       digitalWrite(12, LOW);
  219.       delayMicroseconds(400);  
  220.  
  221.       digitalWrite(12, HIGH);  //1
  222.       delayMicroseconds(700);
  223.       digitalWrite(12, LOW);
  224.       delayMicroseconds(400);
  225.      }
  226.     }
  227.    else
  228.    {
  229.     digitalWrite(12, LOW);
  230.    }
  231. }
A hozzászólás módosítva: Okt 21, 2022
Következő: »»   749 / 852
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