-
IT café
Arduino hardverrel és szoftverrel foglakozó téma. Minden mikrovezérlő ami arduinoval programozható, és minden arduino program, board, és hardverrel kapcsolatos kérdések helye.
Új hozzászólás Aktív témák
-
Melorin
addikt
Üdv.
Én jelenleg egy Arduino vezérelte digitális hangerőszabályozón dolgozok.
A digit IC 0-255 tartományban működik, 0-nál teljesen halk, 255-nél max hangerő.
Most távirányítóval szabályozom, ha nyomok egyet a hangerő-fel gombon, akkor hozzáad az aktuális értékhez +1-et. Ha hangerő-le, akkor -1.
Szeretném kibővíteni valahogy egy potenciométerrel, amit az Arduino analog bemenetére kötök. Sikerült már potival egy LED fényerejét PWM-ben szabályozni, ami ugye szintén 0-255 érték. Csak itt az a gond, hogy ha tekerem, ha nem a potit, akkor is beolvassa az értéket a program, így tegyük fel, ha jelenleg a hangerő 192 érték a poti állása miatt, akkor ha a távirányítón növelem ezt az értéket, akkor vissza fog ugrani a hangerő értéke a poti állásához.Van valami ötletetek, hogyan lehetne csak a poti tekerésekor kiolvastatni az értékét?
-
Melorin
addikt
Sziasztok!
Szereztem az arduinomhoz egy H-bridge-t. Egy 4-6V DC motort kéne forgatnia.
A baj az, hogy ha a H-bridge panelre 12V tápot kötök, akkor a motorra is 12V-ot ad ki. Viszont ha 5V-al táplálom, a H-bridge-ből semmi feszültség nem jön a motorra. (egyelőre a motor helyett LED-et kötöttem be a biztonság kedvéért)
Hogyan tudnám ezt a problémát megoldani?A másik problémám pedig az, hogy nem tudom úgy megírni a programot hozzá, hogy ha nyomom a gombot akkor a motor folyamatosan forogjon. Ha nem teszek bele delay-t akkor olyan rövid ideig villan fel a LED hogy szemmel alig látni a fényt, nem hiszem, hogy a motor forogna. Ha pedig delay-t rakok be, pl 200ms-t akkor darabosan megy rá a feszültség.
//---------------------------------------------------------------------MAIN PROGRAM------------------------------------------
void loop()
{
digitalWrite(motor_le, LOW);
digitalWrite(motor_fel, LOW);
//----------------------------------------------------------------------TÁVIRÁNYÍTÓ--------------------------------------------
if (irrecv.decode(&results)) {
switch (results.value){
case Fel: //----------Hangero FEL-------------------------
digitalWrite(motor_fel, HIGH);
delay(200);
//digitalWrite(motor_le, LOW);
break;
case Le: //--------Hangero LE----------------------
digitalWrite(motor_le, HIGH);
//digitalWrite(motor_fel, LOW);
delay(200);
break;
}
irrecv.resume();
}
}[ Szerkesztve ]
-
Melorin
addikt
A +12V lábára 12V DC-t kötök, a GND-re az Arduino GND-jét és a táp GND-jét.
Az In1/In2 lábakra pedig bekötöttem az Arduino 50/52 lábát.
Hogy érted, hogy a program alapján nem úgy használom ahogy kéne? Hogy kéne ahhoz, hogy amíg nyomom a távirányító gombját, forogjon a motor folyamatosan, de ahogy elengedem, rögtön megálljon? -
Melorin
addikt
Sziasztok!
Nano-hoz szeretnék valami kisméretű kijelzőt amin főként csak hőmérséklet érték lesz kijelezve.
Melyik kijelzőtípust ajánlanátok erre, aminek a programját nagyon könnyű megírni? -
Melorin
addikt
Sziasztok!
IRremote library-t használva jelenleg távirányítóval tudok vezérelni egy relét. Egy külön program van arra, hogy kinyerjem a távirányító gombjához tartozó kódot:void loop()
{
if (irrecv.decode(&results))
{
int value = results.value;
Serial.println(" ");
Serial.print("Code: ");
Serial.println(results.value); //prints the value if a button press
Serial.println(" ");
irrecv.resume(); // Receive the next value
Serial.println("*****************");
}
}
Ezt a kódot a végleges arduino programban hozzárendelem egy funkcióhoz és működik:if (irrecv.decode(&results)) {
switch (results.value){
case "kinyert kód":
if (ledState == LOW) {
digitalWrite(ledPin, HIGH);
ledState = HIGH;
delay(500);
}Hogyan tudnám megoldani azt, hogy egy programon belül legyen a kód kiolvasása, annak elmentése EEPROM-ba, és onnantól kezdve az EEPROM-ban eltárolt kódot figyelje a program?
[ Szerkesztve ]
-
Melorin
addikt
Az a problémám, hogy a 'case' mindenképpen egy általam előre beírt kódot fogad el csak, az eeprom-ból kiolvasott értékkel nem lehet helyettesíteni.
Szóval így nem megy:
ir = EEPROM.read(address);
case ir:
if (ledState == LOW) {
digitalWrite(ledPin, HIGH);
ledState = HIGH;
delay(500);
}Hibaleírás: the value of 'ir' is not usable in a constant expression
[ Szerkesztve ]
-
Melorin
addikt
válasz gyapo11 #11373 üzenetére
Jól látod, valóban van egy switch, így néz ki a teljes kód a távirányítós programrészben.
if (irrecv.decode(&results)) {
switch (results.value){
case irpower:
if (ledState == LOW) { //----------Bekapcs-------------------------
digitalWrite(ledPin, HIGH);
ledState = HIGH;
delay(500);
}
if (ledState == HIGH) { //----------Kikapcs-------------------------
digitalWrite(ledPin, LOW);
ledState = LOW;
delay(500);
}
break;
}
irrecv.resume();
} -
Melorin
addikt
Sziasztok!
Szerettem volna arduinoval vezérelni a Corsaid LED szalagomat ezen cikk alapján: [link]
Bekötöttem a LED-et így:Amikor rádugtam a tápot az arduinora, az arduino panelből füst jött ki :S
Gondoltam nem bírja a stab IC a panelen meghajtani a ledet így a Vin-re kötöttem a LED szalag 5V pinjét. (5V 3A tápja van az arduinonak) De ekkor is elfüstölt az arduino.
Mit csinálhatok rosszul? -
Melorin
addikt
Sziasztok.
Arduino Nano-m van és egy IR vevővel kapcsolgatok ki-be egy készüléket. Van egy nyomógomb is bekötve és a programba írva arra az esetre ha nem lenne kéznél a távirányító.
Az a problémám, hogy infrán nagyon sokszor nem működik a kapcsolgatás. Teljesen random, nem tudom pl a hosszú üzemidő miatti melegedésre fogni. Az IR vevő kis panelen villog a led ami jelzi, hogy veszi az adást, de az arduino nem kapcsolgatja a relét. Ilyenkor a nyomógombbal kapcsolgatok, emiatt kizárom az arduino lefagyását mert ha lefagyna, ez sem működne. Kipróbáltam másik arduinoval, másik IR vevővel de ugyanaz a hiba.
Szerintetek mi lehet a baja? -
Melorin
addikt
IRremote.h lib-et használok. Samsung TV távirányítóját használom.
Megszakításra van kötve az infra vevő, vagy poll-ozol a programmal?
Magát a kérdést sem értem, sajnos a választ sem tudom
Talán a programkód elejéből kiderül:#include <IRremote.h>
const int IRpin = 9;
IRrecv irrecv(IRpin);
decode_results results;
int relay = 2; //D2
int buttonPin = 5;Ha nem, légyszi segíts kibogozni
-
Melorin
addikt
válasz razorbenke92 #17475 üzenetére
Nekem ez az új verzió kínai. Pl. nem írja, hogy hol lehet megadni, hogy melyik pinen van az IR vevő lába.
A régiben ezt így oldottam meg:
const int IRpin = 9;
Itt nem tér ki rá. -
Melorin
addikt
Sajnos én ehhez sík hülye vagyok, közel járok az arduino széttöréséhez.
Kb semmi sem úgy működik mint a régi irremote library-ban. Mindig kiáll hibára a program ellenőrzése, és a példafájlok között sem találok értékelhetőt. Egyikben sem látok olyat, hogy ha xy kódot vesz a vevő akkor lépjen érvénybe a kód.
Új hozzászólás Aktív témák
- GIGABYTE RTX 3060TI GAMING OC 8G
- ÁRGARANCIA!Épített KomPhone i9 14900KF 64GB RAM RTX 4090 24GB GAMER PC termékbeszámítással
- ÁRGARANCIA!Épített KomPhone Ryzen 9 7900X3D 64GB RAM RTX 4090 24GB GAMER PC termékbeszámítással
- ÁRGARANCIA!Épített KomPhone Ryzen 7 7800X3D 32/64GB RAM RTX 4090 24GB GAMER PC termékbeszámítással
- ÁRGARANCIA!Épített KomPhone i7 14700KF 32/64GB RAM RTX 4090 24GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen
Cég: Promenade Publishing House Kft.
Város: Budapest