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   126 / 850
(#) atus1981 válasza erdeidominik1999 hozzászólására (») Jún 26, 2015 /
 
Utóbbi hibátlan
Köszönöm.
Azt még leírnád, ha megkérlek, hogy mikor tárolja a settemp értéket?
(#) erdeidominik1999 válasza erdeidominik1999 hozzászólására (») Jún 26, 2015 /
 
Ha az összes gomb fel van engedve, és a tárolthoz képest változott az érték, akkor írja eepromba, ezzel megelőzhető, hogy sokszor írja... Ha valamiben kell még segítség, nyugodtan írj. Egyébként biztos, hogy 1 fokonként akarod állítani, nem fél? Milyen hőmérőt használsz?
A hozzászólás módosítva: Jún 26, 2015
(#) atus1981 válasza erdeidominik1999 hozzászólására (») Jún 27, 2015 /
 
Nagyszerű!
LM35-t használok.
Fél fokonként se lenne rossz.
Tettem bele egy ilyen kiegészítést:
  1. if (temp > settemp) {
  2.   digitalWrite(pwm,LOW);
  3.   delay(100);
  4. }

Mert amikor elérte a beállítottat, akkor még fűtött egy kicsit.
(#) ALI hozzászólása Jún 27, 2015 /
 
Sziasztok.

Menüzéssel kapcsolatban szeretnék segítséget kérni.
Azt szeretném meg oldani, hogy egy programban tudjam változtatni az értékeket Pl.: hőfok, időzítés.
Gombot be tudom úgy állítani, hogy fel vagy le állítsa az értékeket de azt, hogy ki választom az állítandó részt az nem megy. Nincs valami példa program valakinek?

Köszi
(#) erdeidominik1999 válasza ALI hozzászólására (») Jún 27, 2015 / 1
 
Szia! Én ezt szoktam használni, tök jól működik.
  1. int currentMenuItem = 0;
  2.  
  3. void setup() {
  4.  
  5. }
  6.  
  7. void loop() {
  8.  
  9.  mainMenu();
  10. }
  11.  
  12. void mainMenu() {
  13.  
  14.  if (currentMenuItem < 0 || currentMenuItem > 4) {
  15.  currentMenuItem = 0;
  16.  }
  17.  
  18.  
  19.  currentMenuItem = currentMenuItem - 1; // a felfele gomb
  20.  displayMenu(currentMenuItem); // és ez is
  21.  
  22.  
  23.  currentMenuItem = currentMenuItem + 1; //a lefele gomb
  24.  displayMenu(currentMenuItem); // és ez is
  25.  
  26.  
  27.  selectMenu(currentMenuItem); //a választ gomb
  28. }
  29.  
  30. void displayMenu(int x) {
  31.  switch (x) {
  32.    
  33.  case 1:
  34.  lcd.setCursor(0,0);
  35.  lcd.print ("-> Az első menüpont");
  36.  break;
  37.  
  38.  case 2:
  39.  lcd.setCursor(0,0);
  40.  lcd.print ("-> A második menüpont");
  41.  break;
  42.  
  43.  case 3:
  44.  lcd.setCursor(0,0);
  45.  lcd.print ("-> A harmadik menüpont");
  46.  break;
  47.  }
  48. }
  49.  
  50. void selectMenu(int x) {
  51.  switch (x) {
  52.  case 1:
  53.  lcd.clear();
  54.  lcd.setCursor(0,0);
  55.  lcd.print ("Az első menüpont kiválasztva");
  56.  break;
  57.  
  58.  case 2:
  59.  lcd.clear();
  60.  lcd.setCursor(0,0);
  61.  lcd.print ("A második menüpont kiválasztva");
  62.  break;
  63.  
  64.  case 3:
  65.  lcd.clear();
  66.  lcd.setCursor(0,0);
  67.  lcd.print ("A harmadik menüpont kiválasztva");
  68.  break;
  69.  }
  70. }


Csak arra kell vigyázni, hogy ahol a szöveg nem annyi karakter, mint az lcd, ott szóközökkel ki kell egészíteni, mert különben az előző szövegből ottmarad.
Illetve így szerintem jobban mutat:
  1. void displayMenu(int x) {
  2.  switch (x) {
  3.    
  4.  case 1:
  5.  lcd.setCursor(0,0);
  6.  lcd.print ("-> Az első menüpont");
  7.  lcd.setCursor(0,1);
  8.  lcd.print ("   A második menüpont");
  9.  break;
  10.  
  11.  case 2:
  12.  lcd.setCursor(0,0);
  13.  lcd.print ("   Az első menüpont");
  14.  lcd.setCursor(0,1);
  15.  lcd.print ("-> A második menüpont");
  16.  break;
  17.  
  18.  case 3:
  19.  lcd.setCursor(0,0);
  20.  lcd.print ("   A második menüpont");
  21.  lcd.setCursor(0,1);
  22.  lcd.print ("-> A harmadik menüpont");
  23.  break;
  24.  }
  25. }
(#) ALI válasza erdeidominik1999 hozzászólására (») Jún 27, 2015 /
 
Nem egészen értem. Kódot hogy tudok ide fel ide fel tölteni hogy úgy nézzen ki mint a tiéd.
Számsorban
(#) csatti2 válasza ALI hozzászólására (») Jún 27, 2015 /
 
Használd a kód gombot a hozzászólás írásakor. És a programrészletet tedd a megjelenő code /code közé.
(#) ALI válasza csatti2 hozzászólására (») Jún 27, 2015 /
 
  1. #include <max6675.h>
  2. #include <LiquidCrystal.h>
  3. int lcd_key     = 0;
  4. int adc_key_in  = 0;
  5. #define btnRIGHT  0
  6. #define btnUP     1
  7. #define btnDOWN   2
  8. #define btnLEFT   3
  9. #define btnSELECT 4
  10. #define btnNONE   5
  11. boolean blinkled = 0;
  12. unsigned int time = millis() + 6000;
  13. // read the buttons
  14. int read_LCD_buttons()
  15. {
  16.  adc_key_in = analogRead(0);      // read the value  the sensor
  17.  // my buttons when read are centered at these valies: 0, 144, 329, 504, 741
  18.  // we add approx 50 to those values and check to see if we are close
  19.  if (adc_key_in > 1000) return btnNONE; // We make this the 1st option for speed reasons since it will be the most likely result
  20.  // For V1.1 us this threshold
  21.  if (adc_key_in < 50)   return btnRIGHT;  
  22.  if (adc_key_in < 195)  return btnUP;
  23.  if (adc_key_in < 380)  return btnDOWN;
  24.  if (adc_key_in < 555)  return btnLEFT;
  25.  if (adc_key_in < 790)  return btnSELECT;  
  26.  
  27.  
  28.  
  29.  
  30.  return btnNONE;  // when all others fail, return this...
  31. }
  32. const int thermoDO = 4;
  33. const int thermoCS = 5;
  34. const int thermoCLK = 6;
  35. const int venti = 3;
  36. const int rele = 2;
  37.  
  38. float homerseklet = 0.00;
  39. float tempMin = 10;   // the temperature to start the fan
  40. float tempMax = 40;   // the maximum temperature when fan is at 100%
  41. int fanSpeed;
  42. int fanLCD;
  43.  
  44. MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);
  45.  
  46. LiquidCrystal lcd(12, 13, 8, 9, 10, 11);
  47.  
  48. void setup() {
  49.  
  50.   pinMode(venti, OUTPUT);
  51.  
  52.   pinMode(rele, OUTPUT);
  53.  
  54.   lcd.begin(16, 2);
  55.  
  56. }
  57.  
  58. void loop() {
  59. lcd_key = read_LCD_buttons();
  60.  switch (lcd_key)               // depending on which button was pushed, we perform an action
  61.  {
  62.    case btnUP:
  63.      {
  64.      tempMin++;
  65.      tempMax++;
  66.      break;
  67.    }
  68.    case btnDOWN:
  69.      {
  70.      tempMin--;  
  71.      tempMax--;
  72.      break;
  73.      }
  74.     }
  75.    
  76.   homerseklet = thermocouple.readCelsius();
  77.     if (homerseklet < tempMin) {
  78.     fanSpeed = 0;
  79.     analogWrite(venti, fanSpeed);
  80.     digitalWrite(rele, HIGH);
  81.       {
  82.      switch (blinkled)              
  83.    {
  84.      case 0:
  85.      {
  86.         if (millis() < time) {
  87.           digitalWrite(rele, HIGH);
  88.           }
  89.           else{
  90.            time=millis() + 3000;
  91.            blinkled = 1;
  92.           }
  93.          
  94.        break;
  95.      }
  96.      case 1:
  97.      {
  98.         if (millis() < time) {
  99.           digitalWrite(rele, LOW);
  100.           }
  101.           else{
  102.            time=millis() + 6000;
  103.            blinkled = 0;
  104.           }
  105.      }    
  106.         break;
  107.      }
  108.      
  109. }
  110. }
  111.   else if ((homerseklet >= tempMin) && (homerseklet <= tempMax)) {
  112.     fanSpeed = map(homerseklet, tempMin, tempMax, 0, 255);
  113.     fanLCD = map(homerseklet, tempMin, tempMax, 0, 100);
  114.     analogWrite(venti, fanSpeed);
  115.     homerseklet = thermocouple.readCelsius();
  116.     if (homerseklet > tempMin) {
  117.   digitalWrite(rele, LOW);  
  118. }
  119.  
  120.  
  121.   }
  122.  
  123.   lcd.setCursor(0, 1);
  124.   lcd.print("H2:");
  125.   lcd.print(homerseklet);
  126.   lcd.print("C");
  127.  
  128.   lcd.setCursor(0, 0);
  129.   lcd.print("H1:");
  130.   lcd.print(tempMax);
  131.   lcd.print("C");
  132.  
  133.  
  134.  
  135.   lcd.setCursor(10, 1);
  136.   lcd.print("V:");
  137.   lcd.print(fanLCD);
  138.   lcd.print("%");
  139.   delay(300);
  140.  
  141. }
(#) ALI válasza csatti2 hozzászólására (») Jún 27, 2015 /
 
Köszi. Sóval itt szeretném változtatni a hőmérsékletet illetve az időket
(#) andykaaa hozzászólása Jún 27, 2015 /
 
Sziasztok
Probalkozom egy Atmega1284P IC-vel, 20 MHz-re, de nem talalok egy egeszseges bootloadert ami integralodna az Arduino IDE progiba (hogy lehessen ISP-vel feltolteni).
Elvileg az uj IDE 1.6.3 es az ujabbak kellene hogy tamogassak, de sajni nem sikerult meg ezzel (1.6.3) a bootloadert beleegetnem. Amiket talaltam azoknak pedig ossze-vissza vannak a kivezetesei.
Volna-e valakinek valami ilyesmije, halas lennem erte.
(#) csatti2 válasza ALI hozzászólására (») Jún 27, 2015 /
 
Nem írom meg helyetted a kódot. Amit tenned kell, hogy pl. a bal/jobb gombokkal növeled/csökkented egy mód változó értékét. Ez a mód változó választja ki, mit jelenítesz meg aktuális változóként és minek az értékét változtatod a fel/le gombokkal. Egyszerű switch/case struktúrával.
(#) erdeidominik1999 válasza csatti2 hozzászólására (») Jún 27, 2015 /
 
Nem boldogulok ezzel a cookie-s hitelesítéssel a webszervernél (hogy ne basic auth legyen, hanem rendesen a weboldalon legyen szövegmező, mint fkx webszerverén), neked sincs valami ötleted?
(#) csatti2 válasza erdeidominik1999 hozzászólására (») Jún 27, 2015 / 1
 
Nem foglalkoztam weboldal készítéssel uC-n. Én egy rendes fájlszervert futtatok itthon, tisztességes webszerverrel és adatbázisszerverrel. A uC-kről jövő adatokat az adatbázisban tárolom. Egyszerűbb a uC program. Sokkal gyorsabb és jobb a webes felület (ami ráadásul integrálhatja az összes adatot, tudja a PHP-t, rendes jelszó titkosítást, HTTPS-t, stb.), automatikus archiválás, RAID, hosszútávú trendek, stb.
Az adatokat pedig VPN-en keresztül érem el kívülről (private key-es védelemmel, nem sima jelszóval).
A hozzászólás módosítva: Jún 27, 2015
(#) fkx válasza erdeidominik1999 hozzászólására (») Jún 28, 2015 /
 
A webszerver ben felvettem egy auth nevű változót, a kiszolgálás indulásakor ez 0. Ha a fejléc beolvasása közben megfelelő jelszó jön be akkor 1-el "vagyolom" ( auth |=1; ) , és a válasz fejlécében küldök egy sütit. Valahogy így:
"Set-Cookie: x00=183956456 \ r \ n"
Ez egy véletlen-szám, amit eltárol a szerver egy tömbben. Ezután kiszolgálja a kérést. Ha bejövő kérés esetén, ha olyan süti érkezik be, amit korábban ebbe a tömbbe mentettem, akkor az auth változóba 2-t teszek ( auth |=2; ) majd a kérés kiszolgálása jön (ilyenkor már nem küld sütit a szerver).
A kiszolgálás kezdetén ha auth == 0 , akkor jelszókérő oldal töltődik be, egyébként kiszolgálja a kérést. A változó értékéből tudni lehet, hogy sütivel vagy jelszóval van authentikálva a user, így pl. a jelszócsere csak akkor fut le ha auth=3, azaz korábban bejelentkezett a felhasználó, a sütit visszaküldte, és beírta a jelszót is. Bejövő változókat viszont (a jelszót és a sütit kivéve) csak auth==2 esetén fogad el a szerver. Ebben a megoldásban az a jó, hogy a sütit automatikusan kezeli a böngésző, minden kérés fejlécébe beleteszi, ami az arduino-nak szól, addig amíg be nem zárod. A böngésző bezárásával pedig gyakorlatilag ki is vagy jelentkezve. Persze a süti a szerverben is törölhető a tömbből, így a kijelentkezés is egyszerűen megoldható.
A hozzászólás módosítva: Jún 28, 2015
(#) erdeidominik1999 válasza fkx hozzászólására (») Jún 28, 2015 /
 
Köszi szépen, sokat segítettél, még annyit, hogy a tömb értékeit mikor nullázod?
(#) arduinoforever válasza V1rusH hozzászólására (») Jún 28, 2015 /
 
Szia!
A két IC-t kiválthatod egy PT2314-essel is!
Ahhoz van fügvénykönyvtár is!
PT2314 Függvénykönyvtár Arduinohoz
Nekem is ez az IC lesz a következő kihívásom!

Egy kis példaprogram:
  1. #include <Wire.h>
  2. #include <PT2314.h>
  3.  
  4. PT2314 audioChip;
  5.  
  6. void setup(){
  7.   audioChip.initialize(1,true);//source 1,mute on
  8.   audioChip.source(1);//select your source 0...3
  9.   audioChip.volume(33);//Vol 0...62 : 63=muted
  10.   audioChip.gain(3);//gain 0...11.27 db
  11.   audioChip.loudness(true);//true or false
  12.   audioChip.bass(0);//bass -7...+7
  13.   audioChip.treble(0);//treble -7...+7
  14.   audioChip.balance(0);//-31...+31
  15. }
  16. void loop(){
  17. }
A hozzászólás módosítva: Jún 28, 2015
(#) fkx válasza erdeidominik1999 hozzászólására (») Jún 28, 2015 /
 
A tömböt a program indulásakor, és jelszócsere esetén nullázom. Az új sütit mindig a következő helyre teszi amíg el nem éri a tömb végét (van egy cookie_idx változó az indexeléshez). A tömb végére érve ez nullázódik, és a legrégebben kiadott sütit fogja felülírni. A webfelületre is fogok kijelentkezés gombot tenni, ennek hatására a szerver csak az adott bejelentkezéshez tartozó sütit fogja nullázni a tömbben.
(#) erdeidominik1999 válasza fkx hozzászólására (») Jún 28, 2015 /
 
Köszönöm szépen!
(#) V1rusH hozzászólása Jún 28, 2015 /
 
Na mégegyszer...
Előzőekben már nekifutottam a dolgoknak, de kb úgy, hogy rögtön versenyt úszni, mikor még most tanulgatok úszni is...
Kezdjük akkor onnan, hogy ez a víz, ez a medence, Én meg aki úszni akar...


Van 1-1 PT2258 és PT2323 IC-ém. Mindkettő I2C-vel vezérelhető. Ezt szeretném arduinóval végrehajtani. Ebből is egyenlőre az elsőt.
Tudom mi is az az arduino, kis fényjátékokat írogattam már, de az mégsem I2C.
Jelenleg ott tartok, hogy előttem van egy Mega2560 panel, és a PT2258 próbapanelen összedugdosva.
Előttem a 60 napos lecke első két I2C-s leckéje. Többivel nem foglalkoztam, nem akarok hőt mérni.
A lecke demonstrációja ha jól tudom UNO-ra épül. Ott a 4, 5 analóg port van I2C-re kirakva. Gondolom Ez a megánál is maradhat így?!
Van egy mintaprogram is:
  1. //I2C Scanner minta
  2.  
  3. #include <Wire.h>
  4. int counter, data;
  5. void setup()
  6. {
  7.  pinMode(13, OUTPUT);
  8.  digitalWrite(13, LOW);
  9.  Serial.begin(9600);
  10.  Serial.println();
  11.  Serial.println();
  12.  Serial.println("I2CScanner ready!");
  13.  Serial.println();
  14.  Wire.begin();
  15. }
  16. void loop() {
  17.   Wire.requestFrom(counter,1);
  18.     Serial.print("addr: ");
  19.     if (counter<16) Serial.print("0");
  20.     Serial.print(counter,HEX);
  21.     if (Wire.available()) {
  22.      Serial.print(" found!");
  23.     }
  24.     else {
  25.       Serial.print("  ");
  26.     }
  27.     Serial.print( (counter%4) ? "\t":"\n");
  28.    delay(1);
  29.   }
  30.   while(1) {
  31.     digitalWrite(13,HIGH);
  32.     delay(300);
  33.     digitalWrite(13,LOW);
  34.     delay(300);
  35.   }
  36. }

Azonban ebben a programban nem látok hivtkozást a 4, 5 kivezetésre, ellenben a 13 igen.
Valamint azt az arduino fogja eldönteni hogy melyik lesz az SCL és az SDLkivezetés.
Töredelmesen bevallom, nem néztem meg a 24LC adatlapját, hogy ott melyik láb melyik. Vagy azt nekem kell kiadni programban, hogy melyik kivezetés melyik kommunikációs port lesz?

Látom a leckében, hogy az eszközt meg kell hívni-címezni. A PT2258 esetén ez 10001000. De hogy adok utasítást az eszköznek, hogy hajtson végre egy műveletet? Csak simán utána írom a címzésnek?
PL: 100010001111100M Ha jól értelmezem , ekkor némítania kellene mind a 6 csatornát. De a hőmérős program mintájába nem tudom beilleszteni ennek az eszköznek a vezérlését.

Ebben kérek segítséget!
Előre is köszönöm!
(#) V1rusH válasza V1rusH hozzászólására (») Jún 28, 2015 /
 
A bemásolt mintaprogram a While(1) -nél megáll a következő hibaüzenettel:
Arduino: 1.6.4 (Windows 7), Board: "Arduino Mega or Mega 2560, ATmega2560 (Mega 2560)"

sketch_jun28a:31: error: expected unqualified-id before 'while'
sketch_jun28a:38: error: expected declaration before '}' token
expected unqualified-id before 'while'

This report would have more information with
"Show verbose output during compilation"
enabled in File > Preferences.
(#) arduinoforever válasza V1rusH hozzászólására (») Jún 28, 2015 / 1
 
Ez kell Neked!
Tartalmazza a PT2258 és a PT2323 IC-k használatát!

Töltsd le ZIP formátumban!

Csomagold ki a benne lévő OrionHT550 mappát másold a Dokumentumok/Arduino/libraries mappába.

Majd a programodba hívd be a "OrionHT550.h" fájlt.

Ha az OrionHT550.h fájlt megynyitod pl. Notepad++-al akkor megtalálsz benne minden szükséges parancsot és definíciót!
(#) V1rusH válasza arduinoforever hozzászólására (») Jún 28, 2015 /
 
Aztamindenit neki!!!! Nem is mertem gondolni ilyen komplex segítségre!!! Nagyon szépen köszönöm! Ebbe a programcsomagban benne van az IR vezérlés is?
Van 2 db kis távirányítóm. Az egyik a sajátja volt az egyik konfignak, a másik egy kis rádiós mp3 lejátszóé volt. Ez utóbbit szeretném majd felhasználni!
Egy ismeretlen típusú távirányítót hogy tudok illeszteni hozzá?
(#) arduinoforever válasza V1rusH hozzászólására (») Jún 28, 2015 /
 
Az már egy kicsit bonyolultabb!
Ahhoz ismerni kell a távirányító által küldött jeleket egy külön példaprogramban és hozzárendelgetni az adott funkciókhoz.
(#) arduinoforever hozzászólása Jún 28, 2015 /
 
Átnéztem és igen tartalmazza azt is!
Ha megtudod egy példaprogrammal nézni hogy az adott távirányítód melyik gombra milyen hexadecimális kódot küld, akkor azokat az értékeket írd át az OrionHT550.h fájlban a megfelelő sorokba.
Pl.: Ha a hangerő lefele gombot nyomva pl. f234d1-et küld a távirányító, akkor az OrionHT550.h fájlban írd át a "#define rVOLM 0xf234d1" sort.
(#) V1rusH válasza arduinoforever hozzászólására (») Jún 28, 2015 /
 
Majd rákeresek hogy van-e ilyen teszt programot arduinora.
Valami ilyesmit találtam! Hátha ez jó lesz!
Ha jól értlemezem ez sorosporton keresztül írja vissza PC-re a gombhoz tartozó HEX kódot?
A hozzászólás módosítva: Jún 28, 2015
(#) arduinoforever válasza V1rusH hozzászólására (») Jún 28, 2015 /
 
Igen ez lesz az!
(#) V1rusH válasza arduinoforever hozzászólására (») Jún 28, 2015 /
 
Nem szeretnék visszaélni segítő szándékoddal, de ha elakadok kereshetlek ez ügyben pü-ben? Nem akarom a topikot ezzel feltartani!
(#) arduinoforever válasza V1rusH hozzászólására (») Jún 28, 2015 /
 
Persze!
(#) taresz hozzászólása Jún 28, 2015 /
 
Sziasztok!

Egy kis szakértést szeretnék kérni.
Ezt a magasságmérő ketyerét szeretném megépíteni, már meg is is jött hozzá minden, de rögtön az elején elakadtam:
Bővebben: Link
A programot beraktam ugyan az arduinoba, de az ellenőrzéskor azt írja ki: Hiba a fordítás során.
Kérdésem, hogy a progival van gond, vagy én vagyok láma a dologhoz???

Problémám második része, hogy megvettem ezt:
Bővebben: Link


E két panelt az alábbiak szerint kötöttem össze:

CP2104 Arduino pro mini

GND GND
+5V VCC
RX TX
TX RX
DTR GRN

Így jó lehet?
Akinek van egy kis ideje ránézni kérem segítsen!

Köszi.
A hozzászólás módosítva: Jún 28, 2015
(#) arduinoforever válasza taresz hozzászólására (») Jún 28, 2015 /
 
Szia!

Idézet:
CP2104 Arduino pro mini

GND GND
+5V VCC
RX TX
TX RX
DTR GRN”


Mi az a GRN?
A DTR a Reset-re megy Jelölhetik DTR vagy RST-nek is!

A Tiny altiméterhez meg is vannak a függvénykönyvtárak?
Mert ezek hiánya okoz gondot szerintem!

Adafruit_GFX.h
Adafruit_SSD1306.h
Button.h
EEPROMAnything.h
Következő: »»   126 / 850
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