Arduino kezdő
-
- Bitmanipulátor
- Hozzászólások: 128
- Csatlakozott: 2015. december 8. kedd, 19:52
Re: Arduino kezdő
Köszi! Azt hiszem menni fog. Ha sikerül, akkor közzéteszem, másnak már ne kelljen szívnia!
Bagi
Bagi
Re: Arduino kezdő
Kód: Egész kijelölése
/////////////////////////////////////////////////////////////////
// Created by Kevin Elsenberger //
// June 2, 2013 //
// elsenberger.k at gmail.com //
/////////////////////////////////////////////////////////////////
//Needed to access the eeprom read write functions
#include <EEPROM.h>
long number1 = 123456789;
long number2 = 987654321;
//This function will write a 4 byte (32bit) long to the eeprom at
//the specified address to address + 3.
void EEPROMWritelong(int address, long value)
{
//Decomposition from a long to 4 bytes by using bitshift.
//One = Most significant -> Four = Least significant byte
byte four = (value & 0xFF);
byte three = ((value >> 8) & 0xFF);
byte two = ((value >> 16) & 0xFF);
byte one = ((value >> 24) & 0xFF);
//Write the 4 bytes into the eeprom memory.
EEPROM.write(address, four);
EEPROM.write(address + 1, three);
EEPROM.write(address + 2, two);
EEPROM.write(address + 3, one);
}
//This function will return a 4 byte (32bit) long from the eeprom
//at the specified address to address + 3.
long EEPROMReadlong(long address)
{
//Read the 4 bytes from the eeprom memory.
long four = EEPROM.read(address);
long three = EEPROM.read(address + 1);
long two = EEPROM.read(address + 2);
long one = EEPROM.read(address + 3);
//Return the recomposed long by using bitshift.
return ((four << 0) & 0xFF) + ((three << 8) & 0xFFFF) + ((two << 16) & 0xFFFFFF) + ((one << 24) & 0xFFFFFFFF);
}
void setup()
{
Serial.begin(9600);
}
void loop()
{
//Adding a delay in order to have the time to open the
//Arduino serial monitor.
delay(5000);
//Starting at the first byte on the eeprom.
long address=0;
//Writing first long.
EEPROMWritelong(address, number1);
address+=4;
//Writing second long.
EEPROMWritelong(address, number2);
address+=4;
Serial.println("If numbers are equals, it's working !");
Serial.print(number1);
Serial.print(" and ");
//Readind and sending first long.
Serial.println(EEPROMReadlong(0));
Serial.print(number2);
Serial.print(" and ");
//Readind and sending second long.
Serial.println(EEPROMReadlong(4));
}
Re: Arduino kezdő
Lehetséges, hogy ezzel nagyon hamar haza vágja az AVR-ben levő EEPROM-ot?
Re: Arduino kezdő
Ez minta az írás-olvasásra.....
Nem ott kell hagyni folyamatos írásra
Nem ott kell hagyni folyamatos írásra
-
- Bitmanipulátor
- Hozzászólások: 128
- Csatlakozott: 2015. december 8. kedd, 19:52
Re: Arduino kezdő
Nagyon köszönöm!
Rengeteg időt spóroltál meg nekem ezzel!
Bagi
Rengeteg időt spóroltál meg nekem ezzel!
Bagi
-
- Bitmanipulátor
- Hozzászólások: 128
- Csatlakozott: 2015. december 8. kedd, 19:52
Szövegek kezelése Arduino C-ben
Sziasztok!
Ismét elakadtam. A Ruzsinszky féle C/C++ Arduino platformon könyvet olvasgatom. Sajnos az objektumorientált programozásról írtakat csak részben értem, és talán ezért nem boldogulok. A feladatom az lenne, hogy egy számot karakter stringé alakítsak, és ennk a stringnek megállapítsam a hosszát és egyenként elővegyem belőle a számjegyeket karakteres formában.
A változó deklaráció még megy (példa):
sz=123;
String karakter String(sz);
Azonban a karakter string hosszának megállapítása már nem:
hossz=karakter.lenght();
Jelenleg az UnoArduSim programot használom fejlesztésre. Lehet, hogy az nem boldogul ezzel a sorral. Esetleg valamilyen más ötlete tapasztalata nincs valakinek, hogy hogyan tudnám megoldani a problémámat?
Köszönettel
Bagi
Ismét elakadtam. A Ruzsinszky féle C/C++ Arduino platformon könyvet olvasgatom. Sajnos az objektumorientált programozásról írtakat csak részben értem, és talán ezért nem boldogulok. A feladatom az lenne, hogy egy számot karakter stringé alakítsak, és ennk a stringnek megállapítsam a hosszát és egyenként elővegyem belőle a számjegyeket karakteres formában.
A változó deklaráció még megy (példa):
sz=123;
String karakter String(sz);
Azonban a karakter string hosszának megállapítása már nem:
hossz=karakter.lenght();
Jelenleg az UnoArduSim programot használom fejlesztésre. Lehet, hogy az nem boldogul ezzel a sorral. Esetleg valamilyen más ötlete tapasztalata nincs valakinek, hogy hogyan tudnám megoldani a problémámat?
Köszönettel
Bagi
Re: Arduino kezdő
És ha felbontod 10-es számrendszer szerint?
-
- Bitmanipulátor
- Hozzászólások: 128
- Csatlakozott: 2015. december 8. kedd, 19:52
Re: Arduino kezdő
Sziasztok!
Meg van a megoldás! Kiderült, hogy a fiam C++-ben nem teljesen kezdő, és kapásból elmondta mi a baj. Egyrészt volt egy betű csere amit nem vettem, észre lenght >> length.
Ami ennél fontosabb, hogy a működést is kezdem megérteni. Azoknak akiknek szüksége lehet ilyesmire leírnám a tapasztalataimat. Ime egy futó kód:
A kód annyit csinál, hogy meghívja a dblekerdez függvényt, aminek a millis() értékét adja át. A függvényben létrejön a string1 nevű string típusú változó. Még a deklarációs részben definiáltam egy szam_string nevű, string típusú változót, mert a stringgé alakított számot globálisan szeretném használni a programban. Mivel szükségem van a string hosszára és egy egy pozicióban található betűre is, ezért deklaráltam a hossz és betu nevű változókat. Ezek értékét a dblekerdez függvényben adom meg (a betu változóba a 0. pozíció karakterét másolom, nyilván itt egy változó áll majd egy hasznos kódban), de lehetne a loop()-ban is, csak ekkor hossz=szam_string.length(); és betu=szam_stringcharAt(x); kódot kellene írni, hiszen itt már csak a szam_string változóm létezik. A kódot az UnoArduSim nevű szimulátorban futtatom, ahol látom a változók értékét, és a dolog működik. Nyilván ez a kód alapjában egy marhaság, csak demonstrációs szándékkal adtam át a millis() értékét. Arra viszont jó volt, hogy kiderüljön csak int számokat tud karakterré alakítani, azt is előjelesen, tehát amíg a millis() által visszadott long érték alsó két byte-ja ~32000 alatt van, addig kapunk egy pozitiv számot reprezentáló stringet, viszont ezen érték felett minusz előjellel kezdődő stringet kapunk. Ez egyébként még hasznos is lehet. Nekem azonban így is tökéletes a működés.
Ha jól értettem meg a dolog lényegét, akkor a dblekerdez függvényemben létrejön egy string1 nevű objektumom, majd a függvényből kilépve ez meg is szűnik. Nem tudom memóriában mi történik, de remélem teljesen felszabadul a string1 számára lefoglalt memória. Futtattam a kódot a szimulátorban pár percig, az több ezer függvényhívás, és nem fogyott el a memória. Kipróbálom hamarosan valós hardveren is.
Bagi
Meg van a megoldás! Kiderült, hogy a fiam C++-ben nem teljesen kezdő, és kapásból elmondta mi a baj. Egyrészt volt egy betű csere amit nem vettem, észre lenght >> length.
Ami ennél fontosabb, hogy a működést is kezdem megérteni. Azoknak akiknek szüksége lehet ilyesmire leírnám a tapasztalataimat. Ime egy futó kód:
Kód: Egész kijelölése
String szam_string=String();
byte hossz=0;
char betu;
void setup() {
}
void loop() {
dblekerdez(millis());
}
void dblekerdez(int szam)
{
String string1=String(szam);
szam_string=string1;
hossz=string1.length();
betu=string1.charAt(0);
}
Ha jól értettem meg a dolog lényegét, akkor a dblekerdez függvényemben létrejön egy string1 nevű objektumom, majd a függvényből kilépve ez meg is szűnik. Nem tudom memóriában mi történik, de remélem teljesen felszabadul a string1 számára lefoglalt memória. Futtattam a kódot a szimulátorban pár percig, az több ezer függvényhívás, és nem fogyott el a memória. Kipróbálom hamarosan valós hardveren is.
Bagi
Re: Arduino kezdő
Sajnos nekem valamiért nem tünik tökéletesnek ez a konvertálás rutin!
Meg hüjült 32762 után?
SorosMonitor:
32683
32690
32697
32704
32711
32718
32726
32733
32741
32748
32755
32762
4294934530 ????
4294934542
4294934554
4294934567
4294934580
4294934592
4294934604
4294934617
4294934629
4294934642
Meg hüjült 32762 után?
SorosMonitor:
32683
32690
32697
32704
32711
32718
32726
32733
32741
32748
32755
32762
4294934530 ????
4294934542
4294934554
4294934567
4294934580
4294934592
4294934604
4294934617
4294934629
4294934642
Re: Arduino kezdő
Talán igy már jó lessz:
Kód: Egész kijelölése
String szam_string=String();
byte hossz=0;
char betu;
void setup() {
Serial.begin(9600);
}
void loop() {
dblekerdez(millis());
Serial.println(szam_string);
}
void dblekerdez(unsigned long szam)
{
szam_string=String(szam);
hossz=szam_string.length();
betu=szam_string.charAt(0);
}
-
- Bitmanipulátor
- Hozzászólások: 128
- Csatlakozott: 2015. december 8. kedd, 19:52
ATmega328 lábkiosztás és pin megfeleltetés
Sziasztok!
Éppen hardvert építek. Az Arduino UNO R3 kapcsolási rajzából ki tudom logikázni, hogy melyik programban hivatkozott kivezetés melyik lábnak felel meg a mikrovezérlőben. Pl. A0 bemenet a 28PDIP chip 23-as lába. A programban azonban 14-es pin-re hivatkozok. Létezik valamilyen dokumentáció arra, hogy melyik chip-ben melyik láb felel meg a hivatkozott ki/bemenetnek? Találok valahol ilyet?
Köszönettel
Bagi
Éppen hardvert építek. Az Arduino UNO R3 kapcsolási rajzából ki tudom logikázni, hogy melyik programban hivatkozott kivezetés melyik lábnak felel meg a mikrovezérlőben. Pl. A0 bemenet a 28PDIP chip 23-as lába. A programban azonban 14-es pin-re hivatkozok. Létezik valamilyen dokumentáció arra, hogy melyik chip-ben melyik láb felel meg a hivatkozott ki/bemenetnek? Találok valahol ilyet?
Köszönettel
Bagi
Re: Arduino kezdő
arduino.h állomány
Pighixxx oldalai/pdf/képei (látványos)
Pighixxx oldalai/pdf/képei (látványos)
-
- Bitmanipulátor
- Hozzászólások: 128
- Csatlakozott: 2015. december 8. kedd, 19:52
Re: Arduino kezdő
Köszönöm!
Nos ezek azok az apró infók, amik egy kezdőnek nagyon hiányoznak. Már legalább egy órát vacakoltam, hogy kitaláljam, mit hová kell kötözgetni!
Bagi
Nos ezek azok az apró infók, amik egy kezdőnek nagyon hiányoznak. Már legalább egy órát vacakoltam, hogy kitaláljam, mit hová kell kötözgetni!
Bagi
Re: Arduino kezdő
Off: Ezért újul/bővül meg a 60+16 napos tanfolyam, a csomagok, a cikkek egy része.
Ezen visszajelzések azok, amik segítenek tudni, hogy miket kell berelakni.
Most amivel bővül:
- Wiring és az Arduino története
- Arduino oldalágak, Wiring-húgok,
- Fritzing-tervezés,
- Processing kapcsolat
- Arduino lábak, és pillantás a fekete dobozba (regiszterek, belső chipszerkezet, Arduino "boncolás"
- LCD trükkök, adatgyűjtés....
És persze a tanfolyam tervezett kétirányú folytatása is tartogat meglepetéseket
Ezen visszajelzések azok, amik segítenek tudni, hogy miket kell berelakni.
Most amivel bővül:
- Wiring és az Arduino története
- Arduino oldalágak, Wiring-húgok,
- Fritzing-tervezés,
- Processing kapcsolat
- Arduino lábak, és pillantás a fekete dobozba (regiszterek, belső chipszerkezet, Arduino "boncolás"
- LCD trükkök, adatgyűjtés....
És persze a tanfolyam tervezett kétirányú folytatása is tartogat meglepetéseket
-
- Bitmanipulátor
- Hozzászólások: 128
- Csatlakozott: 2015. december 8. kedd, 19:52
Re: Arduino kezdő
Nagyon jó! Köszönjük!