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   125 / 850
(#) csatti2 válasza hadhazik hozzászólására (») Jún 25, 2015 /
 
Természetesen tisztában vagyok ezzel. Van itthon 4db DUE-m. Shield-eket nem használok, csak prototípusnak használom az arduino platformot, a rendes áramköreimet általában nulláról építem fel (és arduino mentesen).
(#) artiny hozzászólása Jún 25, 2015 /
 
Helotok
Nano Ardurino - Mi az amit ezzel nem lehet megoldani a normal meretuvel pedig meg lehet.
Szerintetek szukseges a normal meretu - vagy eleg a NANO ha mar van egy RB pi ? (osszekotve a raspberyvel ,vagy kulon kulon hasznalni)

(ebayrol szoktam rendelni pl
MINI USB Nano V3.0 ATmega328P CH340G 5V 16M Micro-controller board ...duino
vagy egy normal meretu ilyen egy arban van:
UNO R3 ATmega328P CH340 Mini USB Board for Compatible-Arduino
- mert meg ennyi van a paypalomon :U )

Fog kelleni majd ellenalasok is....ezek kozul melyik kellene?
1

2

3

kb.egy honap mulva fogok elkezdeni vele foglalkozni...de addig meg rendelek mindent ami fog kelleni hoza hogy addigra lejojjon kinabol.
(#) Kera_Will válasza artiny hozzászólására (») Jún 25, 2015 /
 
Felesleges addig bármit is rendelned amíg azt se tudod kiszámolni , hogy az adott áramköri környezetbe mekkora értékű ellenállást kell beépíteni.
Ezek általános iskolai fizika ismeretek.(OHM törvény)
Mivel kezdenél el foglalkozni?Mi célból?Mit akarsz uC-el "mozgatni"?
Ha már mindenképpen ellenállásokat rendelnél akkor inkább E12 / E6 ellenállás sorokat tartalmazó "sortiment/assortment" keressél.
A hozzászólás módosítva: Jún 25, 2015
(#) GyurEEE hozzászólása Jún 25, 2015 /
 
Sziasztok!
Arduinoval szeretnék összehozni egy 16bites ADC-t SPI interfészen keresztül. Ez az adatlap alapján meg is írtam egy programot, de nem működik, első üzenetben kalibrálnám az eszközt, de már az sem működik, az ic-n lévő p0, p1, p2 lábakat kellene bekapcsolnia, de eddig sem jut el, mit rontottam el? Köszi!


  1. /*
  2.  
  3. SSTRB goes low when the ADC begins a conversion and goes
  4. high when the conversion is finished
  5.  
  6. SSTRB goes low at the beginning of calibration and goes
  7. high to signal the end of calibration
  8.  
  9. Control byte format
  10. 7 - (MSB) START The first logic “1” bit, after CS goes low, defines the beginning of the Control Byte
  11. 6 - UNI/BIP 1 = unipolar, 0 = bipolar
  12. 5 - INT/EXT Selects the internal or external conversion clock. 1 = Internal, 0 = External.
  13. 4 - M1    M1   M0   MODE
  14. 3 - M0    0    0     24 External clocks per conversion (short acquisition mode)
  15.           0    1     Start Calibration. Starts internal calibration.
  16.           1    0     Software power-down mode
  17.           1    1     32 External clocks per conversion (long acquisition mode)
  18. 2 - programmable bit P2
  19. 1 - programmable bit P1
  20. 0 - programmable bit P0
  21.  
  22. */
  23.  
  24. #define CALIBRATION   0b11100111
  25. #define START         0b11011000    
  26.  
  27. #include <SPI.h>
  28. int  sstrb    =  8;
  29. int  adcPin   =  9;
  30. int  sdPin    = 10;
  31. unsigned int  adcValue =  0;
  32. byte  LowByte,HighByte;
  33.  
  34. void setup() {
  35.   pinMode(sstrb,INPUT);
  36.   pinMode(adcPin, OUTPUT);
  37.   pinMode(sdPin, OUTPUT);
  38.   digitalWrite(adcPin,HIGH);
  39.   digitalWrite(sdPin,HIGH);
  40.   digitalWrite(10,LOW);
  41.   Serial.begin(115200);
  42.   SPI.begin();
  43.   SPI.setBitOrder(MSBFIRST);
  44.   SPI.setClockDivider(SPI_CLOCK_DIV4);
  45.   SPI.setDataMode(SPI_MODE0);
  46.   delay(100);
  47.   digitalWrite(adcPin,LOW);
  48.   SPI.transfer(CALIBRATION);  //kalibrálás
  49.   while(!digitalRead(sstrb)){}
  50.   SPI.transfer(START);        //mérés indítás
  51. }
  52.  
  53.  
  54. void loop(){
  55.   while(!digitalRead(sstrb)){}
  56.   adcValue=SPI.transfer(START);
  57.   Serial.print("ADC: ");
  58.   Serial.println(adcValue);
  59.  
  60.  
  61.  
  62. }
(#) atus1981 válasza erdeidominik1999 hozzászólására (») Jún 25, 2015 /
 
Nagyszerűen működik, viszont ha szeretném kijelezni a hőmérsékletet, akkor be kell tennem egy delay-t, ami lassabb működést eredményez.
Nincs ötleted arra, hogy a kettő egyszerre menjen és ne befolyásolja a késleltetés?
Köszi.
(#) erdeidominik1999 válasza atus1981 hozzászólására (») Jún 25, 2015 /
 
Nem igazán értem, hogy miért kell a delay, nem tudsz programot mutatni, hogy értsem is?
(#) atus1981 válasza erdeidominik1999 hozzászólására (») Jún 26, 2015 /
 
Erről lenne szó.
  1. #include <EEPROM.h>
  2. #include <LiquidCrystal.h>
  3. int tempPin = A1;  
  4. int led = 13;
  5. int pwm = 6;
  6. float temp;  
  7. float settemp;
  8. //float kitemp;
  9.  
  10. int swtu = 2;  
  11. int swtd = 3;
  12. const int numReadings = 20;
  13. int readings[numReadings];
  14. int index = 0;
  15. int total = 0;                
  16. int average = 0;
  17.  
  18. LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
  19.  
  20. void setup() {
  21.   pinMode (led,1);
  22.   pinMode (pwm, OUTPUT);
  23.  
  24.   /* lcd.begin(16, 2);
  25.   lcd.setCursor(0,0);
  26.   lcd.print("hello, world!");
  27.   delay(1000);
  28.   lcd.clear();
  29.   EEPROM.read (2); */
  30.   for (int thisReading = 0; thisReading < numReadings; thisReading++)
  31.     readings[thisReading] = 0;
  32.   delay (1000);
  33. }
  34.  
  35. void loop() {
  36.  
  37.    total= total - readings[index];
  38.    readings[index] = analogRead(tempPin);
  39.    total= total + readings[index];
  40.    index = index + 1;
  41.    if (index >= numReadings)
  42.    index = 0;
  43.    average = total / numReadings;
  44.    
  45.    
  46.  
  47.   int tvalue = average;  
  48.   float temp = (tvalue / 1024.0) * 500;
  49.  
  50.   lcd.begin(16, 2);
  51.  
  52.   lcd.setCursor (0,0);
  53.   lcd.print("aktualis:");
  54.   lcd.print (temp);  
  55.   lcd.setCursor (13,0);
  56.   lcd.print((char)223);
  57.   lcd.print ("C");
  58.  
  59.  
  60. lcd.setCursor (0,1);
  61. lcd.print ("kivant:");
  62. lcd.print (kitemp);
  63. lcd.setCursor (11,1);
  64. lcd.print((char)223);
  65. lcd.print ("C");
  66.    
  67.   settemp = EEPROM.read(2);
  68.  
  69.  // kitemp = settemp;
  70.  
  71. analogWrite(pwm,map(temp-kitemp,0,30,0, 255));
  72.  
  73.  
  74.   delay (200);
  75.  
  76.   if            
  77.     (digitalRead(swtu)== 1 )
  78.   {
  79.     (settemp ++);
  80.     EEPROM.write (2,settemp);
  81.    // lcd.clear();
  82.    
  83.   }
  84.  
  85. else{
  86.  
  87. }
  88.  
  89. if
  90. (digitalRead (swtd) == 1)
  91. {
  92.   (settemp --);
  93.   EEPROM.write (2,settemp);
  94.   //lcd.clear();
  95.  
  96. }
  97. else {
  98.  
  99. }
  100.  
  101.  
  102. /*if ((temp - 0.3 < kitemp) && (kitemp > temp + 0.3))
  103. {
  104.   digitalWrite (led,1);
  105.  // lcd.begin (16,2);
  106.   lcd.setCursor(15,1);
  107.   lcd.print("I");
  108.   delay (100);
  109. }
  110. else
  111. {
  112.   digitalWrite (led,0);
  113.   lcd.setCursor(15,1);
  114.   lcd.print("O");
  115.   delay(100);
  116. }
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124. //delay (200); */
  125.  
  126.  
  127.  
  128. }
(#) erdeidominik1999 válasza atus1981 hozzászólására (») Jún 26, 2015 /
 
Melyiket szeretnéd kiiratni? az aktuálisat, vagy a kívántat? hova tetted az a delayt? ha jól emlékszem, azt mondtad, hogy ez fűtés, ugye? ha az, akkor a map-nál a temp-kitemp-et fordítva kell, mert így minusz érték lesz. a kívánt hőfok nincs is ledeklarálva, csak kommentkénet van ott.
(#) atus1981 válasza erdeidominik1999 hozzászólására (») Jún 26, 2015 /
 
A kívántat és az aktuálisat is, egy-egy sorban. A kitemp helyett természetesen settemp van, csak az maradt bent. Fűtés lenne, igen. Delay a 74. sorban van.
(#) V1rusH hozzászólása Jún 26, 2015 /
 
Sziasztok!
Szeretnék arduinoval vezérelni egy PT2258 és PT2323 IC-t.
Említett eszközök I2C-n kommunikálnak.
A 60 napos leckében ezen a fejezeten túl vagyok, de nem látom át, egészen, hogy hogyan fogjak hozzá egy I2C eszköz illesztéséhez, vagy az adott funkciók elvégzésére hogyna vegyem rá.
Az egyik eszköz egy 6 csatornás választó és 6 csatornás hangerőszabályzó.
képen látható hogy kapcsolódnak egymáshoz, de mindkettő külön vezérelhető.
Szeretném a hangerőt rotary encoder-rel változtatni, és nyomógombbal a csatorna választást vezérelni.
Jelenleg Mega-m van, de ezen feladat ellátására vagy minit, vagy nano-t akarok használni majd.
Mellékelem a két IC adatlapját is.
(#) kapu48 válasza V1rusH hozzászólására (») Jún 26, 2015 /
 
Ha nincsenek jobb adatlapok?
Akkor felejtős az egész!

Ezekből a bekötésen kívül semmit nem tudtunk meg!
A regiszterek címei és a szükséges vezérlés beállítási definíciók, nagyon kellenek az értelmes programozáshoz!
(#) V1rusH válasza kapu48 hozzászólására (») Jún 26, 2015 /
 
A 2258-nak ott van a pdf-ben. A 2323-hoz nem találtam jobbat eddig, bár azt valahogy használják analóg kapcsolással is, mert az egyiknél mechanikus kapcsolóval volt választható a csatorna. Szőt, az analóg totál analóg volt, mert a hangerőt is egy 6 sávos poti szabályozta. Hogy mi ráció van ebben, nem tudom, de így volt.
Ugyanis van 2 bontott és 1 jelenleg üzemben levő áramköröm. ebből az egyik bontott és az üzemben lévő mc-vel vezérelt Meg is van az mc-jük, de szerintem esély nincs rá, hogy ki lehessen olvasni, mert tuti lezárta a gyártó!
Egyenlőre segítsetek abban amiben tudtok, én meg kutászkodok, hátha találok valami leírást a 2323 címzéséről.
(#) reloop válasza V1rusH hozzászólására (») Jún 26, 2015 /
 
A PT2323 utasításkészletét itt tudod megnézni. A PT2258 szerintem elég részletes.
A Wire könyvtár segítségével küldhetsz adatot. Google-val találsz mintaprogramokat, magam is úgy kezdtem.
(#) V1rusH válasza reloop hozzászólására (») Jún 26, 2015 /
 
Közben megtaláltam én is a 2323 utasításkészletét.
(#) erdeidominik1999 válasza atus1981 hozzászólására (») Jún 26, 2015 /
 
Van a progiban egy két dolog, amit nem értek, hogy minek, mert sokkal egyszerűbben is meg lehet oldani, kicsit kikozmetikáztam neked, de nem akartam összedugni, úgyhogy nem próbáltam ki. Az új:
  1. #include <EEPROM.h>
  2. #include <LiquidCrystal.h>
  3. int tempPin = A1;
  4. int led = 13;
  5. int pwm = 6;
  6. int settemp;
  7. int last_settemp;
  8.  
  9. int swtu = 2;
  10. int swtd = 3;
  11. int numReadings = 20;
  12. int total = 0;                
  13. int average = 0;
  14. int state=0;
  15. int lastState=0;
  16.  
  17. LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
  18.  
  19. void setup() {
  20.   pinMode (led,1);
  21.   pinMode (pwm, OUTPUT);
  22.   lcd.begin(16, 2);
  23.   settemp=EEPROM.read(2);
  24.   last_settemp=settemp;
  25. }
  26.  
  27. void loop() {
  28.   total=0;
  29.  
  30.   for (int i=0;i<numReadings;i++){
  31.   total=total+analogRead(tempPin);
  32.   delay(1);  
  33.   }
  34.   average=total/numReadings;  
  35.  
  36.   int tvalue = average;
  37.   float temp = (tvalue / 1024.0) * 500;
  38.  
  39.   lcd.begin(16, 2);
  40.  
  41.   lcd.setCursor (0,0);
  42.   lcd.print("aktualis:");
  43.   lcd.print(temp);
  44.   lcd.setCursor (13,0);
  45.   lcd.print((char)223);
  46.   lcd.print ("C");
  47.  
  48. lcd.setCursor (0,1);
  49. lcd.print ("kivant:");
  50. lcd.print (settemp);
  51. lcd.setCursor(11,1);
  52. lcd.print((char)223);
  53. lcd.print ("C");
  54.  
  55. analogWrite(pwm,map(temp-settemp,0,30,0,255));
  56.  
  57. if(digitalRead(swtu)== 1){
  58. state=1;
  59. }else if(digitalRead (swtd) ==1){
  60. state=2;
  61. }else{
  62. if(settemp!=last_settemp){
  63. EEPROM.write (2,settemp);
  64. last_settemp=settemp;
  65. }  
  66. }
  67.  
  68. if(lastState!=state){
  69. if(state==1){
  70. settemp ++;    
  71. }else if(state==2){
  72. settemp--;  
  73. }
  74. lastState=state;
  75. }
  76.  
  77. /*if((temp - 0.3 < kitemp) && (kitemp > temp + 0.3)){
  78.   digitalWrite (led,1);
  79.   lcd.setCursor(15,1);
  80.   lcd.print("I");
  81.   delay (100);
  82. }else{
  83.   digitalWrite (led,0);
  84.   lcd.setCursor(15,1);
  85.   lcd.print("O");
  86.   delay(100);
  87. }*/
  88. }
(#) erdeidominik1999 hozzászólása Jún 26, 2015 /
 
Sziasztok! Tudom, nem igazán ide való, de mivel webszerver, ezért jobb ötletem nincs, mint ide írni Ez egy kis javascript: ajaxos webszervernél az érkező adatokat szeretném egy változóba pakolni, tömbként, de sehogyan sem akar működni az érkező adatok itt vannak:
  1. for (count = 0; count < num_an; count++) {                                                             
  2. document.getElementsByClassName("switches")[count].innerHTML =this.responseXML.getElementsByTagName("switch")[count].childNodes[0].nodeValue;
  3. }

tehát amit most a switches-be rak, az kéne nekem egy tömb-ös változóba, tud valaki segíteni nekem, nagyon megköszönném.
A hozzászólás módosítva: Jún 26, 2015
(#) atus1981 válasza erdeidominik1999 hozzászólására (») Jún 26, 2015 /
 
Köszi.
Kipróbáltam, de a kívántat nem lehet megmozdítani...
(#) kapu48 válasza erdeidominik1999 hozzászólására (») Jún 26, 2015 /
 
A javascript műveletei
T Ö M B Ö K:
Bővebben: Link
(#) erdeidominik1999 válasza atus1981 hozzászólására (») Jún 26, 2015 /
 
Jó, már látom a hibám, az int state=0;-t tedd át a loop elejére. Az eeprom-ot meg azért tettem át úgy, mert annak nem egészséges, ha minden nyomásnál írja, mert rövidül az élete, a gombokat pedíg azért, mert prellegni fognak.
(#) erdeidominik1999 válasza kapu48 hozzászólására (») Jún 26, 2015 /
 
Köszi, isten vagy, nem tudom ezt hogyan nem találtam meg.
(#) fkx válasza erdeidominik1999 hozzászólására (») Jún 26, 2015 /
 
Nem tudom aktuális-e még a kérdésed. A weblap egy része valóban elhelyezhető webtárhelyen , hiszen elég csak az ajaxos javascriptet tölteni az arduino szerverről. Ennek egyetlen hátránya, hogy akkor mindenképpen kell hozzá internet, helyi/belső hálóban nem biztos, hogy működni fog. Mivel az oldalban a hivatkozások (pl. a .js betöltése) nem csak relatív, hanem teljes útvonalnévvel megadott linkkel is megoldható így egyetlen weboldal is töltődhet több különböző címről.

A php auth nem tudom hogy működik, ahhoz nekem is utána kellene olvasnom. De azt el tudom mondani, ha érdekel, hogy az arduinoban hogy oldottam meg a jelszavas belépést.
A gyorsításra talán megoldás lesz a DUE gyorsabb ARM processzora. Egyelőre nem tudom eldönteni, hogy az SPI korlátozza-e a sebességet, vagy az ATMEGA processzor.
Most pl. egy másik SD kártya van belerakva, és ezzel sokkal lassúbb a szerver, sejtésem szerint azért mert 8Gb-os kártya, van rajta 7,5Gb AVI fájl, és a maradék helyre másoltam fel a webszerver fájljait. Gondolom az arduino FAT32 kezelő algoritmusa kicsit többet dolgozik ilyenkor.
A hozzászólás módosítva: Jún 26, 2015
(#) atus1981 válasza erdeidominik1999 hozzászólására (») Jún 26, 2015 /
 
Így gondoltad? Sajnos így is ugyanaz
  1. #include <EEPROM.h>
  2. #include <LiquidCrystal.h>
  3. int tempPin = A1;
  4. int led = 13;
  5. int pwm = 6;
  6. int settemp;
  7. int last_settemp;
  8.  
  9. int swtu = 3;
  10. int swtd = 2;
  11. int numReadings = 20;
  12. int total = 0;                
  13. int average = 0;
  14.  
  15. int lastState=0;
  16.  
  17. LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
  18.  
  19. void setup() {
  20.   pinMode (led,1);
  21.   pinMode (pwm, OUTPUT);
  22.   lcd.begin(16, 2);
  23.   settemp=EEPROM.read(2);
  24.   last_settemp=settemp;
  25. }
  26.  
  27. void loop() {
  28.   int state=0;
  29.   total=0;
  30.  
  31.   for (int i=0;i<numReadings;i++){
  32.   total=total+analogRead(tempPin);
  33.   delay(1);
  34.   }
  35.   average=total/numReadings;
  36.  
  37.   int tvalue = average;
  38.   float temp = (tvalue / 1024.0) * 500;
  39.  
  40.   lcd.begin(16, 2);
  41.  
  42.   lcd.setCursor (0,0);
  43.   lcd.print("aktualis:");
  44.   lcd.print(temp);
  45.   lcd.setCursor (13,0);
  46.   lcd.print((char)223);
  47.   lcd.print ("C");
  48.  
  49. lcd.setCursor (0,1);
  50. lcd.print ("kivant:");
  51. lcd.print (settemp);
  52. lcd.setCursor(11,1);
  53. lcd.print((char)223);
  54. lcd.print ("C");
  55.  
  56. analogWrite(pwm,map(temp-settemp,0,30,0,255));
  57.  
  58. if(digitalRead(swtu)== 1){
  59. state=1;
  60. }else if(digitalRead (swtd) ==1){
  61. state=2;
  62. }else{
  63. if(settemp!=last_settemp){
  64. EEPROM.write (2,settemp);
  65. last_settemp=settemp;
  66. }
  67. }
  68.  
  69. if(lastState!=state){
  70. if(state==1){
  71. settemp ++;  
  72. }else if(state==2){
  73. settemp--;  
  74. }
  75. lastState=state;
  76. }
  77.  
  78. /*if((temp - 0.3 < kitemp) && (kitemp > temp + 0.3)){
  79.   digitalWrite (led,1);
  80.   lcd.setCursor(15,1);
  81.   lcd.print("I");
  82.   delay (100);
  83. }else{
  84.   digitalWrite (led,0);
  85.   lcd.setCursor(15,1);
  86.   lcd.print("O");
  87.   delay(100);
  88. }*/
  89. }
(#) erdeidominik1999 válasza atus1981 hozzászólására (») Jún 26, 2015 /
 
GND-ot vagy 5V-ot teszel rá? mert most kipróbáltam, és nekem tökéletes.
(#) erdeidominik1999 válasza fkx hozzászólására (») Jún 26, 2015 /
 
Köszi a segítséget, a webtárhelyről lemondtam, mert túl bonyola lenne a script, arra lennék igazándiból kíváncsi, hogy neked hogyan van a hitelesítés?
(#) atus1981 válasza erdeidominik1999 hozzászólására (») Jún 26, 2015 /
 
5V-t, de ha megcserélem, akkor is ugyanaz...
(#) erdeidominik1999 válasza atus1981 hozzászólására (») Jún 26, 2015 /
 
Nem is értem, most próbáltam, és nekem ment... próbáld meg, hogy beteszel egy serial.begint, és ahol a settemp-- ill. ++ van, ott a settemp értékét kiiratod, nem-e csak az lcd-n nem megy...
(#) atus1981 válasza erdeidominik1999 hozzászólására (») Jún 26, 2015 /
 
Kiírattam portra és ott is ugyanaz történik...
(#) erdeidominik1999 válasza atus1981 hozzászólására (») Jún 26, 2015 /
 
Hát ezt végképp nem értem, 5v-t adsz a 2-es vagy 3-as pinre, és semmi?
(#) atus1981 válasza erdeidominik1999 hozzászólására (») Jún 26, 2015 /
 
A felfelé gombra ugrik egyet, majd ha elengedem, akkor visszavált.
(#) erdeidominik1999 válasza atus1981 hozzászólására (») Jún 26, 2015 / 1
 
Most kipróbáltam még egyszer, tökéletes, tettél rá ellenállást, hogy ne prellegjen? Vagy itt van, belső felhúzó ellenállással:
  1. #include <EEPROM.h>
  2. #include <LiquidCrystal.h>
  3. int tempPin = A1;
  4. int led = 13;
  5. int pwm = 6;
  6. int settemp;
  7. int last_settemp;
  8.  
  9. int swtu = 3;
  10. int swtd = 2;
  11. int numReadings = 20;
  12. int total = 0;                
  13. int average = 0;
  14.  
  15. int lastState=0;
  16.  
  17. LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
  18.  
  19. void setup() {
  20.   pinMode (led,OUTPUT);
  21.   pinMode (pwm, OUTPUT);
  22.   pinMode (swtu, INPUT);
  23.   pinMode (swtd, INPUT);
  24.   digitalWrite(swtu,LOW);
  25.   digitalWrite(swtd,LOW);
  26.   lcd.begin(16, 2);
  27.   settemp=EEPROM.read(2);
  28.   last_settemp=settemp;
  29. }
  30.  
  31. void loop() {
  32.   int state=0;
  33.   total=0;
  34.  
  35.   for (int i=0;i<numReadings;i++){
  36.   total=total+analogRead(tempPin);
  37.   delay(1);
  38.   }
  39.   average=total/numReadings;
  40.  
  41.   int tvalue = average;
  42.   float temp = (tvalue / 1024.0) * 500;
  43.  
  44.   lcd.begin(16, 2);
  45.  
  46.   lcd.setCursor (0,0);
  47.   lcd.print("aktualis:");
  48.   lcd.print(temp);
  49.   lcd.setCursor (13,0);
  50.   lcd.print((char)223);
  51.   lcd.print ("C");
  52.  
  53. lcd.setCursor (0,1);
  54. lcd.print ("kivant:");
  55. lcd.print (settemp);
  56. lcd.setCursor(11,1);
  57. lcd.print((char)223);
  58. lcd.print ("C");
  59.  
  60. analogWrite(pwm,map(temp-settemp,0,30,0,255));
  61.  
  62. if(digitalRead(swtu)== HIGH){
  63. state=1;
  64. }else if(digitalRead (swtd) ==HIGH){
  65. state=2;
  66. }else{
  67. if(settemp!=last_settemp){
  68. EEPROM.write (2,settemp);
  69. last_settemp=settemp;
  70. }
  71. }
  72.  
  73. if(lastState!=state){
  74. if(state==1){
  75. settemp ++;
  76. }else if(state==2){
  77. settemp--;  
  78. }
  79. lastState=state;
  80. }
  81.  
  82. /*if((temp - 0.3 < kitemp) && (kitemp > temp + 0.3)){
  83.   digitalWrite (led,1);
  84.   lcd.setCursor(15,1);
  85.   lcd.print("I");
  86.   delay (100);
  87. }else{
  88.   digitalWrite (led,0);
  89.   lcd.setCursor(15,1);
  90.   lcd.print("O");
  91.   delay(100);
  92. }*/
  93. }


Vagy ha ez sem, akkor próbáld meg, hogy gnd-ot teszel rá:
  1. #include <EEPROM.h>
  2. #include <LiquidCrystal.h>
  3. int tempPin = A1;
  4. int led = 13;
  5. int pwm = 6;
  6. int settemp;
  7. int last_settemp;
  8.  
  9. int swtu = 3;
  10. int swtd = 2;
  11. int numReadings = 20;
  12. int total = 0;                
  13. int average = 0;
  14.  
  15. int lastState=0;
  16.  
  17. LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
  18.  
  19. void setup() {
  20.   pinMode (led,OUTPUT);
  21.   pinMode (pwm, OUTPUT);
  22.   pinMode (swtu, INPUT_PULLUP);
  23.   pinMode (swtd, INPUT_PULLUP);
  24.   lcd.begin(16, 2);
  25.   settemp=EEPROM.read(2);
  26.   last_settemp=settemp;
  27. }
  28.  
  29. void loop() {
  30.   int state=0;
  31.   total=0;
  32.  
  33.   for (int i=0;i<numReadings;i++){
  34.   total=total+analogRead(tempPin);
  35.   delay(1);
  36.   }
  37.   average=total/numReadings;
  38.  
  39.   int tvalue = average;
  40.   float temp = (tvalue / 1024.0) * 500;
  41.  
  42.   lcd.begin(16, 2);
  43.  
  44.   lcd.setCursor (0,0);
  45.   lcd.print("aktualis:");
  46.   lcd.print(temp);
  47.   lcd.setCursor (13,0);
  48.   lcd.print((char)223);
  49.   lcd.print ("C");
  50.  
  51. lcd.setCursor (0,1);
  52. lcd.print ("kivant:");
  53. lcd.print (settemp);
  54. lcd.setCursor(11,1);
  55. lcd.print((char)223);
  56. lcd.print ("C");
  57.  
  58. analogWrite(pwm,map(temp-settemp,0,30,0,255));
  59.  
  60. if(digitalRead(swtu)== LOW){
  61. state=1;
  62. }else if(digitalRead (swtd) ==LOW){
  63. state=2;
  64. }else{
  65. if(settemp!=last_settemp){
  66. EEPROM.write (2,settemp);
  67. last_settemp=settemp;
  68. }
  69. }
  70.  
  71. if(lastState!=state){
  72. if(state==1){
  73. settemp ++;
  74. }else if(state==2){
  75. settemp--;  
  76. }
  77. lastState=state;
  78. }
  79.  
  80. /*if((temp - 0.3 < kitemp) && (kitemp > temp + 0.3)){
  81.   digitalWrite (led,1);
  82.   lcd.setCursor(15,1);
  83.   lcd.print("I");
  84.   delay (100);
  85. }else{
  86.   digitalWrite (led,0);
  87.   lcd.setCursor(15,1);
  88.   lcd.print("O");
  89.   delay(100);
  90. }*/
  91. }
Következő: »»   125 / 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