Arduino kezdő

Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10085
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Re: Arduino kezdő

HozzászólásSzerző: Robert » 2020. január 11. szombat, 10:35

Alvóba rakás: ha nem nyúlsz hozzá, timeout.
A kikapcsoláskor a prellt tudod védeni:

Kód: Egész kijelölése

if gomb==nyomva
    wait 50ms
    if gomb == még mindig nyomva
         sleep()


Más: INTre kel fel:

Kód: Egész kijelölése

...
if gomb==nyomva és ebredes <> 1
    wait 50ms
    if gomb == még mindig nyomva
         sleep()
.
.
.
if ebredes = 1
    wait50ms '(prell muljon el)
    ebredes=0
.
.
.

sleepfelkel_INT()
   ebredes=1
   

Elvetemult megoldas:
a felébresztő INT-be berakni az 50 ms várakozást :)

Hardware megoldás: HALL alapú gomb TTL kimenettel - igaz van áramfelvétele :)


Más: SLEEP előtt ha lehet minden bemenet : INPUT és Pullup-ok kikapcsolva.
Órajelet levenni ha kell/lehet normál működés alatt is.
http://www.tavir.hu - a gazda :)

borisz
DrótVégénSzéndarab
Hozzászólások: 31
Csatlakozott: 2016. november 26. szombat, 9:39

Re: Arduino kezdő

HozzászólásSzerző: borisz » 2020. január 11. szombat, 12:42

Az első vázlatot értem, de ott úgysem csak prell mentesítés lesz, hanem kb 3 mp.-ig nyomva tartott gomb mellett megy alvó módba. A másodikban nem értem a

Kód: Egész kijelölése

if gomb==nyomva és ebredes <> 1
sort.
A <> mit jelent? :D
A másik hogy ébredés előtt ugye nem tud végrehajtani parancsot. Akkor a második vázlatban arra utaltál hogy felébred vár 50ms-ot és ha nincs nyomva akkor megint lefut az sleep? Sajnos nem világos számomra.

Avatar
Robert
Elektronbűvölő
Hozzászólások: 10085
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Re: Arduino kezdő

HozzászólásSzerző: Robert » 2020. január 11. szombat, 14:27

<> -> nem egyenlő. Arduinoban: !=

Azaz nézed hogy a gombnyomás ébredés utáni állapot vagy simán nyomott gomb.
http://www.tavir.hu - a gazda :)

vargham
Chipgyilok
Hozzászólások: 287
Csatlakozott: 2014. január 8. szerda, 8:32
Kapcsolat:

Re: Arduino kezdő

HozzászólásSzerző: vargham » 2020. január 12. vasárnap, 9:40

Robert írta:Mondjuk a beépítetteket:
https://www.arduino.cc/en/Reference/LowPowerDeepSleep

Mondjuk AVR-hez NINCS beépített low power lib az Arduino-ban.
Hibaüzenet:

Kód: Egész kijelölése

#error The library is not compatible with AVR boards

Forrás:
https://www.arduino.cc/en/Reference/ArduinoLowPower

Az <avr/sleep.h> sem az Arduino, hanem az AVR LibC része.

Tehát vagy a regisztereket piszkálja, ami NEM ajánlott. Vagy az avr sleep-et használja, amit nem kell telepíteni, mert az alap AVR lib (de nem az Arduino) része. Vagy telepít egy könyvtárat, ami az avr sleep C függvényet hívogatja egy C++ interfészen keresztül, bármi plusz szolgáltatás nélkül.

Avatar
Robert
Elektronbűvölő
Hozzászólások: 10085
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Re: Arduino kezdő

HozzászólásSzerző: Robert » 2020. január 12. vasárnap, 9:52

http://www.tavir.hu - a gazda :)

vargham
Chipgyilok
Hozzászólások: 287
Csatlakozott: 2014. január 8. szerda, 8:32
Kapcsolat:

Re: Arduino kezdő

HozzászólásSzerző: vargham » 2020. január 12. vasárnap, 10:14

Ez jó, mert elsimítja a különféle AVR mikrokontrollerek közötti különbségeket. :-)

borisz
DrótVégénSzéndarab
Hozzászólások: 31
Csatlakozott: 2016. november 26. szombat, 9:39

Re: Arduino kezdő

HozzászólásSzerző: borisz » 2020. január 12. vasárnap, 11:27

Sziasztok. Megint lenne egy kérdésem. Mint meg tudtam regiszter= _BV(x) makróval lehet egy regiszter bizonyos bitjét módosítani. Van olyan is amivel egy regiszter valamelyik bitjét lehet kiolvasni?

Avatar
Robert
Elektronbűvölő
Hozzászólások: 10085
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Re: Arduino kezdő

HozzászólásSzerző: Robert » 2020. január 12. vasárnap, 13:03

regiszter and 0b00000001 -> utolsó jegy 0 v. 1 a többi 0 lesz.
Logikai AND utasítás.

Kód: Egész kijelölése

If (regiszter and 0b00000001) == 1 igaz else hamis
http://www.tavir.hu - a gazda :)

_jani_
DrótVégénSzéndarab
Hozzászólások: 28
Csatlakozott: 2019. február 26. kedd, 16:17
Tartózkodási hely: Mezőhegyes

Re: Arduino kezdő

HozzászólásSzerző: _jani_ » 2020. május 4. hétfő, 0:00

Sziasztok!
Egy kicsit elakadtam egy bagatell problémán.
Nem igazán találtam rá a megoldásra, pedig már átrágtam magam jónéhány leíráson és példa programon...
A problémám a saját függvény vagy rutin kezelésénél az, hogy egy paraméterátadásos függvény nem adja vissza az eredményt.

Kód: Egész kijelölése

byte Elso(byte adat_);
byte adat_ = 1;
byte adat0 = 1;

void setup() {
  Serial.begin (9600);
  Serial.println ("Start.");
}

void loop() {
 Serial.println(adat0);
 byte Elso(byte adat0);
}

byte Elso(byte adat_)
{
  adat_ = adat_ + 1;
  return adat0 = adat_;
}

Ez a program már szintaktikai hiba nélkül lefordul.
Csak épp nem teszi a dolgát.
Hol csúszik el a program? ( Vagy a logikám... )
Bármilyen segítséget köszönök!
by _jani_ :wink:

_jani_
DrótVégénSzéndarab
Hozzászólások: 28
Csatlakozott: 2019. február 26. kedd, 16:17
Tartózkodási hely: Mezőhegyes

Re: Arduino kezdő

HozzászólásSzerző: _jani_ » 2020. május 4. hétfő, 0:16

Meglett a megoldás.

Kód: Egész kijelölése

int Elso(int adat_);
int adat_ = 1;
int adat0 = 1;

void setup() {
  Serial.begin (9600);
  Serial.println ("Start.");
}

void loop() {
 Serial.println(adat0);
 Elso(adat0);
}

int Elso(int adat_)
{
  adat_ = adat_ + 1;
  return adat0 = adat_;
}

Nem megfelelő adattípust adtam meg.
Elvileg elég lenne a byte méret is.
Csak továbbra sem értem, hogy miért nem működött a BYTE típussal a program...
Leírná ezt nekem valaki!? Előre köszönöm a választ.
by _jani_ :wink:

_jani_
DrótVégénSzéndarab
Hozzászólások: 28
Csatlakozott: 2019. február 26. kedd, 16:17
Tartózkodási hely: Mezőhegyes

Re: Arduino kezdő

HozzászólásSzerző: _jani_ » 2020. május 4. hétfő, 13:44

Közben átnéztem a változó típusok listát és a megoldás is gyorsan meg lett...
Az unsigned char lesz az ami nekem kell és a fordító sem panaszkodik érte.

S a kérdés: Mi a különbség a byte és az unsigned char között?
Formailag egyformák, de ezek szerint nem cserélhetők fel egymással...
by _jani_ :wink:

Avatar
Robert
Elektronbűvölő
Hozzászólások: 10085
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Re: Arduino kezdő

HozzászólásSzerző: Robert » 2020. május 5. kedd, 8:53

A byte az a korai fordító (Gcc) ismerte, de kivezetésre került. Char lett helyette (signed/unsigned).
http://www.tavir.hu - a gazda :)

_jani_
DrótVégénSzéndarab
Hozzászólások: 28
Csatlakozott: 2019. február 26. kedd, 16:17
Tartózkodási hely: Mezőhegyes

Re: Arduino kezdő

HozzászólásSzerző: _jani_ » 2020. május 6. szerda, 22:28

Köszönöm a válasz! Így már értem, hogy miért panaszkodott annyit...
Közben a program is letisztult...

Kód: Egész kijelölése

unsigned char adat_ = 1;
unsigned char adat0 = 1;

void setup() {
 Serial.begin (9600);
 Serial.println ("Start.");
}

void loop() {
 Serial.println(adat0);
 delay (250);
 
 adat0 = Elso(adat0);
}

unsigned char Elso(unsigned char adat_) {
 adat_ = adat_ + 1;
 return adat_;
}
by _jani_ :wink:

Kraken
Újonc
Újonc
Hozzászólások: 7
Csatlakozott: 2014. március 31. hétfő, 15:56

Re: Arduino kezdő

HozzászólásSzerző: Kraken » 2020. június 8. hétfő, 13:32

Üdv Mindenkinek,

Vasárnap vásároltam egy Arduino Uno Wifi-t és nagy szenvedések árán már tudok rá programot tölteni azonban a SimpleWebServerWifi feltöltése után amikor a Soros Monitorra megyek azt írja, hogy "Please upgrade the firmware" ezek utána rámentem a Eszközök\Wifi101\WifiNINA Firmware Updater-re. Ott az 1. pontban kiválasztom, hogy Arduino Uno Wifi Rev2 (COM4)-et majd a 2. pontban a NINA firmware (1.3.0) (Arduino Uno Wifi Rev2)-t és rányomok az Update Firmware-re és azt írja ki, hogy "Programmer not responding. Make sure that FirmwareUpdater sketch is loaded on the board." :(
Már mindent kipróbáltam amit a neten találtam és nincs több ötletem...
Tudna segítenek valaki?
Előre is köszönöm.

Kraken

Kraken
Újonc
Újonc
Hozzászólások: 7
Csatlakozott: 2014. március 31. hétfő, 15:56

Re: Arduino kezdő

HozzászólásSzerző: Kraken » 2020. június 8. hétfő, 14:45

Kraken írta:Üdv Mindenkinek,

Vasárnap vásároltam egy Arduino Uno Wifi-t és nagy szenvedések árán már tudok rá programot tölteni azonban a SimpleWebServerWifi feltöltése után amikor a Soros Monitorra megyek azt írja, hogy "Please upgrade the firmware" ezek utána rámentem a Eszközök\Wifi101\WifiNINA Firmware Updater-re. Ott az 1. pontban kiválasztom, hogy Arduino Uno Wifi Rev2 (COM4)-et majd a 2. pontban a NINA firmware (1.3.0) (Arduino Uno Wifi Rev2)-t és rányomok az Update Firmware-re és azt írja ki, hogy "Programmer not responding. Make sure that FirmwareUpdater sketch is loaded on the board." :(
Már mindent kipróbáltam amit a neten találtam és nincs több ötletem...
Tudna segítenek valaki?
Előre is köszönöm.

Kraken

Elméletileg frissítettem.
https://www.arduino.cc/en/Guide/ArduinoUnoWiFiFwUpdater
Ez volt a segítségemre bár nem egészen így csináltam ahogy itt le van írva.

Viszont a célomat nem sikerült elérnem :D
Azt szeretném, hogy a mobilommal (android) tudjak egy LED-et ki be kapcsolni az Arduino UNO Wifi-mel.
Kezdésnek ugye feltöltöttem az Arduino UNO Wifi-re SimpleWebServerWifi-t amire mostmár nem írja, hogy frissítsem, hanem folyamatosana zt írja, hogy "Attempting to connect to Network named: Arduino Uno Wifi - proba"
Mit rontok el? Tudna nekem ebben valaki segíteni?


Vissza: “Arduino / C-nyelvű programozás (AVR-Duino, EthDuino, Arduino, Diecimila)”

Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 0 vendég