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   162 / 863
(#) Bell válasza saua hozzászólására (») Okt 27, 2015 /
 
4 gombot és 4 LED-et tennék a telóra, 4 bites adat elég lesz. Az első 2 bit a LED-et választja ki, a másik kettő pedig azt, hogy az 0, 1, vagy state.
Például a 0B0001 az első LED be, a 0B0000 ki, a 0B1101 a negyedik LED be, a 0B1100 a ki, 0B1111 a state.
A 4 nyomógombnak 4 láb és egymás után elég lekérdezni.
(#) saua válasza Bell hozzászólására (») Okt 27, 2015 /
 
A telefonon most egy gomb van, a színe változik aszerint, hogy a LED be vagy ki van kapcsolva... tehát megérintem a gombot a telefonon, a LED-et tudom kapcsolni és változik a gomb színe is. Ugyanakkor egy fizikai nyomóbombbal is tudom kapcsolgatni a LED-et, ekkor is változik a telefonon levő gomb színe. A bluetoothos kapcsolódáskor automatikusan lekérdezi és a LED állapota szerint aktualizálódik a gomb színe.
Négy gombot tudok megjeleníteni a telefonon, a 4 bites adatot el is tudnám küldeni az arduinó felé...de gondolom ide már valami tömb kellene, hogy a fizikai gombok is működjenek.
A hozzászólás módosítva: Okt 27, 2015
(#) Bell válasza saua hozzászólására (») Okt 27, 2015 /
 
4 külön láb (button1,...4) kell a négy gombnak és hasonlóan kezelni, mint az 1-et. Kezdetnek próbáld kettővel.
(#) saua hozzászólása Okt 27, 2015 /
 
megpróbáltam egy kétgombos változatot...nem működik rendesen

  1. /*
  2. LED attached from pin 12 to ground
  3.  pushbutton attached to pin 5 from +5V
  4. 10K resistor attached to pin 5 from ground
  5. */
  6. #include <SoftwareSerial.h>
  7.  
  8. int bluetoothTx = 2; // TX-O pin of bluetooth mate, Arduino D2
  9. int bluetoothRx = 3; // RX-I pin of bluetooth mate, Arduino D3
  10.  
  11. int led1 = 12;
  12. int button1 = 5;    
  13.  
  14. int led2 = 11;
  15. int button2 = 6;      
  16.  
  17. int dataFromBt;
  18.  
  19. SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);
  20.  
  21. // változókat hozunk létre:
  22. int led1State = LOW;   // kimeneti pin aktuális állapota
  23. int button1State;   // bemeneti pin aktuális állapota
  24. int lastButton1State = LOW;   // bemeneti pin előző értéke
  25.  
  26. int led2State = LOW;   // kimeneti pin aktuális állapota
  27. int button2State;   // bemeneti pin aktuális állapota
  28. int lastButton2State = LOW;   // bemeneti pin előző értéke
  29.  
  30.  
  31. long lastDebounceTime = 0;  
  32. long debounceDelay = 50;    
  33.  
  34. void setup()
  35. {
  36.  Serial.begin(9600); // Begin the serial monitor at 9600bps
  37.  
  38.  bluetooth.begin(115200); // The Bluetooth Mate defaults to 115200bps
  39.  bluetooth.print("$"); // Print three times individually
  40.  bluetooth.print("$");
  41.  bluetooth.print("$"); // Enter command mode
  42.  delay(100); // Short delay, wait for the Mate to send back CMD
  43.  bluetooth.println("U,9600,N"); // Temporarily Change the baudrate to 9600, no parity
  44.  // 115200 can be too fast at times for NewSoftSerial to relay the data reliably
  45.  bluetooth.begin(9600); // Start bluetooth serial at 9600
  46.  pinMode(led1, OUTPUT);
  47.  pinMode(button1, INPUT);
  48. digitalWrite(led1, led1State);
  49.  
  50.  
  51. pinMode(led2, OUTPUT);
  52.  pinMode(button2, INPUT);
  53. digitalWrite(led2, led2State);
  54.  
  55. }
  56.  
  57. void loop()
  58. {
  59.  
  60. if(bluetooth.available()) // If the bluetooth sent any characters
  61.  {
  62. dataFromBt = bluetooth.read();
  63.  
  64.  if(dataFromBt == '1'){
  65. digitalWrite(led1, HIGH);
  66. led1State = 9;
  67.  
  68.  }
  69.  if(dataFromBt == '0'){
  70. digitalWrite(led1, LOW);
  71. led1State = -9;
  72.  
  73.  }
  74.  
  75. if(dataFromBt == '2'){
  76. digitalWrite(led2, HIGH);
  77. led2State = 8;
  78.   }
  79.  if(dataFromBt == '4'){
  80. digitalWrite(led2, LOW);
  81. led2State = -8;
  82.  }
  83.  
  84.  
  85. if(dataFromBt == '3'){
  86. bluetooth.print(led1State);
  87. }
  88.  
  89. if(dataFromBt == '-3'){
  90. bluetooth.print(led2State);
  91.  }
  92.  
  93.  
  94.  }
  95.  
  96.   int reading1 = digitalRead(button1);
  97. int reading2 = digitalRead(button2);
  98.  
  99.   if (reading1 != lastButton1State) {
  100.     lastDebounceTime = millis();
  101.   }
  102.  
  103.   if ((millis() - lastDebounceTime) > debounceDelay) {
  104.     if (reading1 != button1State) {
  105.       button1State = reading1;
  106.  
  107.       if (button1State == HIGH) {
  108.         led1State = !led1State;
  109.         digitalWrite(led1, led1State);
  110.       }
  111.      
  112.     }
  113.    
  114.   }
  115.  
  116.   if (reading2 != lastButton2State) {
  117.     lastDebounceTime = millis();
  118.   }
  119.  
  120.   if ((millis() - lastDebounceTime) > debounceDelay) {
  121.     if (reading2 != button2State) {
  122.       button2State = reading2;
  123.  
  124.       if (button2State == HIGH) {
  125.         led2State = !led2State;
  126.         digitalWrite(led2, led2State);
  127.       }
  128.      
  129.     }
  130.    
  131.   }
  132.  
  133.  
  134.    lastButton1State = reading1;
  135. lastButton2State = reading2;
  136.  }


a BlueTerm appal teszteltem ... a gond ha gombbal kapcsolom be-ki, a 3-ra 1-et vagy 0-t kapok, 9 és -9 helyett...ha blueterm-ből küldöm az 1-et vagy 0-át akkor jó választ kapok.
A hozzászólás módosítva: Okt 27, 2015
(#) icserny válasza atus1981 hozzászólására (») Okt 28, 2015 /
 
Az lcd.begin sort vedd ki a loop-ból!
Ha két sorba akarsz írni, akkor használd az lcd.setCursor() függvényt is!
(#) Bell válasza saua hozzászólására (») Okt 28, 2015 /
 
A digitalWrite -vel csak 0, vagy 1 értéket adhatsz egy digitális kimenetnek. Nem használnék negatív számokat.
(#) saua válasza Bell hozzászólására (») Okt 28, 2015 /
 
Igen...a 70. meg a 80. sorban van a LED kapcsolgatása. Ezeket a a számokat csak azért adtam, hogy valahogy tudjam megkülönböztetni az állapotokat tehát "9" megy a telefon felé ha ha a LED1 be van kapcsolva és "-9" ha a LED1 ki van kapcsolva. A LED2 estén meg "8" és "-8" menne. Azért nem próbálkoztam az általad javasolt stringekkel mert azokat nem tudom szétvágni, a darabjait kezelni.....

A fő probléma, hogy már az első hozzászólásomban levő kód sem működik tökéletesen, mert a BlueTerm appal tesztelve, az is ha gombbal kapcsolom be-ki, a 3-ra 1-et vagy 0-t küld, csak eddig fel sem merült a probléma, mert az eredeti telefonos app 0-át vagy 1-et várt vissza és így jól működött.
(#) Bell válasza saua hozzászólására (») Okt 28, 2015 /
 
A 0B0001 nem string, hanem bináris szám, értéke 1, érdemes ennek utánanézni.
Persze írhatsz helyette decimálisat 0-tól 15-ig Pl. Így 1, az első led bekapcsolása, 0 a ki, 13 a negyedik led bekapcsolása, 12 a ki, stb.
Természetesen a telefonban is egyeznie kell a jelentésnek és a hozzárendelt értéknek.
(#) ALI hozzászólása Okt 29, 2015 /
 
Sziasztok!
Miért van az , hogy az időzítő fut folyamatosan körbe körbe nem veszi figyelembe hogy mi van előtte? Azt szeretném ha igaz hogy fust kisebb mint 200 akkor menjen az időzítő.
  1. if(fust < 200);{
  2. switch (blinkled)              
  3.            {
  4.              case 0:
  5.              {
  6.                 if (millis() < time) {
  7.                   digitalWrite(rele, HIGH);
  8.                   }else{
  9.                    time=millis() + 5000;  
  10.                    blinkled = 1;
  11.                   }
  12.                break;
  13.              }
  14.              case 1:
  15.              {
  16.                 if (millis() < time) {
  17.                   digitalWrite(rele, LOW);
  18.                   }else{
  19.                    time=millis() + 20000;  
  20.                    blinkled = 0;
  21.                   }    
  22.                 break;
  23.              }
  24.             }
  25.     }
(#) kapu48 válasza ALI hozzászólására (») Okt 29, 2015 /
 
if(fust < 200);{ <<< Nem kel az ';' utasítás vége jel!
(#) erdeidominik1999 válasza ALI hozzászólására (») Okt 29, 2015 /
 
Ott az if-nél van egy pontosvessző, szerintem az lehet a gond.
(#) ALI válasza erdeidominik1999 hozzászólására (») Okt 30, 2015 /
 
Igazad volt köszi.
Még egy olyan gondom van , hogy kb 5-6-szor fut le aztán meg áll. Ez mitől lehet?
(#) ALI válasza ALI hozzászólására (») Okt 30, 2015 /
 
Meg oldódott.
(#) Davidd hozzászólása Okt 30, 2015 /
 
Sziasztok! Most kezdek arduinoval foglalkozni, pontosabban programot irni mostani esetbe Attiny13ra. Amit megírtam program félig meddig mukodik is, de még sem az igazi. A lényege az lenne, ha megnyomok egy gombot, egyik lábon ad feszültséget egy lednek, és egy fetnek, ha a tápfeszültség több mint 3.2V, viszont ha kevesebb akkor nem ad jelet a lednek es a fetnek, hanem egy masik lednek ad feszültséget. Mellékelem a programot. (Mintha az ADC nem működne rendesen benne, mert így alapjaraton gyorsan villog a led, ha megnyomom a gombot kialszik es a ledes-fetes része tökéletesen működik.)
  1. void setup(){
  2.   pinMode(4,INPUT);  
  3.   pinMode(0,OUTPUT);
  4.   pinMode(3,OUTPUT);
  5.   pinMode(2,OUTPUT);
  6.   analogReference(INTERNAL);
  7. }
  8.  
  9. float x;
  10.  
  11. void loop(){
  12.   x=analogRead(4);
  13.   if ((digitalRead(1)==HIGH) && (x>650))
  14.   {
  15.   digitalWrite(3, HIGH);
  16.   digitalWrite(0,HIGH);
  17. digitalWrite(2,LOW);}
  18.   else {digitalWrite(3,LOW);
  19.   digitalWrite(0,LOW);
  20. digitalWrite(2,HIGH);}
  21.   if ((digitalRead(1)==HIGH) && (x<650))
  22.   {digitalWrite(2,HIGH);
  23.         digitalWrite(0,LOW);
  24.       digitalWrite(3,LOW);}
  25.         else { digitalWrite(2,LOW);
  26.  digitalWrite(0,HIGH);  
  27. digitalWrite(3,HIGH);}
  28. if (digitalRead(1)==LOW)
  29. digitalWrite(0,LOW);
  30. digitalWrite(2,LOW);
  31. digitalWrite(3,LOW);}
A hozzászólás módosítva: Okt 30, 2015
(#) Bell válasza Davidd hozzászólására (») Okt 30, 2015 /
 
Másodpercenként több tízezerszer lefut, ezt késleltetni kellene, a nyomógombot pedig prellmentesíteni. x float helyett int.
(#) Davidd válasza Bell hozzászólására (») Okt 30, 2015 /
 
Igen ez tény és való, azért pislog gondolom a led egyfolytában. Igen először próbaltam int -el is, nem volt sok sikerelem, a prellmentesites mit takar? Mélyik részét késleltessem és mennyivel?
A hozzászólás módosítva: Okt 30, 2015
(#) reloop válasza Davidd hozzászólására (») Okt 30, 2015 /
 
(#) Davidd válasza reloop hozzászólására (») Okt 30, 2015 /
 
Pontosan ez van téve a kapcsolóhoz, mert játszott velem és lehúztam a gndre egy 1k8-as ellenállással.Attól félek hogy az Attiny13 nak nem jó az ADC-je. Mármint úgy átlagosan. Fontos, hogy a programot tudja kezelni az Attiny13.
A hozzászólás módosítva: Okt 30, 2015
(#) Bell válasza Davidd hozzászólására (») Okt 30, 2015 /
 
A minták közt találsz programot az ADC-re. A soros monitoron láthatod az eredményt.
(#) Balázs válasza Davidd hozzászólására (») Okt 30, 2015 /
 
Az nem igazán jó, hogy a ki- és bekapcsolási küszöb egyaránt 650. Kellene bele egy kis hiszterézis. Valamint nem tudom, hogy a tápfeszed milyen kicsire mehet le, de vigyázz arra, hogy a minimálisan szükséges tápfesz órajelfüggő!
(#) Davidd válasza Balázs hozzászólására (») Okt 30, 2015 /
 
3.2V a minimális feszültség. Ez egy elektromos ciginek lenne a vezérlője, hogy az aksit ne merítsem túl. Emiatt a kicsi attiny13 és nem arduinoba tesztelem, hanem a saját kis helyén a panelen. A lábkiosztás a következő(dip tokozás szerint) 1láb semmi, 2es láb led, 3 láb ADC, 4es gnd, 5ös fet, 6os a gomb, 7-es a masik led 8as +táp. Igazából ha csúszik az órajel itt szerintem nem csinál olyan nagy problémát.
A hozzászólás módosítva: Okt 30, 2015

IMAG0226.jpg
    
(#) Balázs válasza Davidd hozzászólására (») Okt 30, 2015 /
 
Hogyhogy 3.2V a minimális? Azt írtad, hogy akkor kell jelezni, ha az alá megy! De egyébként egy ilyen alkalmazásban pláne kell a hiszterézis. Ha éppen a komparálási küszöb környékén van az akkufesz, akkor a mérési zaj miatt ide-oda fog kapcsolgatni. Az órajelnél meg nem arról van szó, hogy "csúszik", hanem hogy be sem rezeg az oszcillátor, ha túl magas a frekvencia, és túl alacsony a táp.
(#) Davidd válasza Balázs hozzászólására (») Okt 30, 2015 /
 
Szóval, 3,2V nál nem fog lentebb esni a táp, hisz akkor neki tiltania kellene, és felkapcsolni egy másik ledet, hogy lássam hogy le van merülve. Még nem nagyon tiszta a dolog, mert amik példák vannak, mind maga az arduinora van, nekem pedig az attiny13 ra kellene. Vannak utasítások amiket szerintem ez az ic nem ért.
(#) Kovidivi válasza Davidd hozzászólására (») Okt 30, 2015 /
 
Használd a sleep módot, mert különben sokat fogyaszt az Attiny! Több mA-ről van szó, ez napi 24h-ban rengeteg. Vagy csak akkor megy a mikrovezérlő, ha lenyomsz egy gombot?
(#) Davidd válasza Kovidivi hozzászólására (») Okt 30, 2015 /
 
Szűkös a memória, nem az Attiny egyfolytaban kapja a tápot. Kínlódom a programmal, de sehogy nem akar jó lenni. Most még sajnos nem tartok az energiatakarékosságnál.
(#) morzsa15 hozzászólása Okt 31, 2015 /
 
Sziasztok!

Van egy adruino uno klónom és valamiért nem engedi programozni eddig tökéletesen ment. Mi lehet a baj?

  1. avrdude: ser_open(): can't open device "\\.\COM5": A rendszer nem találja a megadott fájlt.
  2.  
  3.  
  4. Hiba a feltöltés során. A hiba elhárítása a http://www.arduino.cc/en/Guide/ oldalon a Troubleshooting#upload alatt került leírásra.
(#) morzsa15 válasza morzsa15 hozzászólására (») Okt 31, 2015 /
 
Sikerült megoldani újra kellet indítani a gépet!

Na viszont segítségetekre van szükségem csinálok tft kijelzőre ilyen pc monitorozó szerűséget de mikor ki írja a szöveget nem törli ki magától annak helyét a tft.fillScreen sajnos nem jó mert olyan gyakran küldi az adatokat neki hogy nem látszik semmi amit ki kellene írnia.

Na erre szeretnék várni tőleletek hogy ezt hogyan tudnám megoldani?

Válaszotokat, segítségeteket előre is köszönöm!
A hozzászólás módosítva: Okt 31, 2015
(#) csatti2 válasza morzsa15 hozzászólására (») Okt 31, 2015 /
 
A legtöbb tft könyvtárnál ha megadsz egy háttérszint, akkor ha felülírod a szöveget, akkor kitörli az alatta lévő részt. Egy másik lehetőség, hogy a frissítendő területre rajzolsz egy háttérszínű téglalapot. Ha több mindent is frissítesz, akkor mindig csak egy-egy elem hátterét töröld majd rajzold ki az elemet így nem nagyon fog villódzni.
(#) morzsa15 válasza csatti2 hozzászólására (») Okt 31, 2015 /
 
Igen így van meg csinálni de olyan gyorsan frissít hogy zavaró mire kitörli az adott szöveget illetve alig lehet el olvasni olyan gyorsan frissít. De itt egy videó róla: Bővebben: Link .
(#) morzsa15 válasza (Felhasználó 15355) hozzászólására (») Okt 31, 2015 /
 
És azt hogyan tudom megoldani?
Következő: »»   162 / 863
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