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   77 / 854
(#) Gabó válasza Medve hozzászólására (») Jan 17, 2015 1 /
 
Pont ebben kellene segítség, hogy ne legyen buta
(#) Tetye hozzászólása Jan 17, 2015 /
 
Sziasztok!
Foglalkozott már valaki SD- mp3 lejátszóval? Esetleg a VS1053b csipes shield?
Bővebben: Link
Kérdésem az lenne hogy szeretném megoldani hogy lcd-re írogassa a számokat. De egyik verzióban sincs benne az LCD kezelés csak ott van hogy létezik.
Viszont a CPP-be nem lehet bepofátlankodni ílymódon valahogy?
  1. #include "filesys.h"
  2. #include "storage.h"
  3. #include "string.h"
  4. #include "mmc.h"
  5. #include "player.h"
  6. #include "config.h"
  7. #include "ui.h"
  8. #include "vs10xx.h"
  9. #include <SoftwareSerial.h>
  10. #include <LiquidCrystal.h>
  11. LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
  12. lcd.begin(16, 2);
  13.        
  14. extern SoftwareSerial mySerial;
  15.  
  16. /** Playing State Global */
  17.  playingstatetype playingState = PS_NORMAL;
  18.  
  19. unsigned char playStop = 1; // play or stop flag,1-play,0-stop
  20.  
  21. unsigned char currentFile = 0;
  22.  
  23. /** Plays a disk file. Returns 1) if the file ends or 2) if the global
  24.     variable playingState is not PS_NORMAL i.e. user has requested
  25.     stop or next or previous.*/
  26. void PlayCurrentFile()
  27. {
  28.    char c, nFragments;
  29.  
  30.   playingState = PS_NORMAL; /* Request to play normally */
  31.   //uiMode = UI_SPEC; /* User interface: show title SPECANA FOR VS1003*/
  32.   lcd.print("asd");
  33.   ///LcdLocateHome();
  34.   ///LcdPutConstantString("Opening ");
  35.  
  36.   //Serial.print("\r\nBuilding file fragment table...");
  37.  
  38.   //sectorAddress.l = album[currentAlbumCnt].track[currentFile].trackAddr.l;
  39.   delay(100);//delay here is very important, give some time to sd card.---by Icing
  40.   nFragments = BuildFragmentTable(); /* Too slow, rewrite! */
  41.  //Serial.print("Fragments: ");
  42.   //Serial.print(nFragments,DEC);
  43.  
  44.  
  45.  // LcdLocateHome();
  46.   ///LcdPutConstantString("Playing ");
  47.  
  48.   for (c=0; c<nFragments; c++){
  49.     sectorAddress.l = fragment[c].start;
  50.     //ConsoleWrite ("\r\nPlayer: Playing from sector ");
  51.     //ConsolePutUInt (sectorAddress.l);
  52.     if (PlayDiskSectors(fragment[c].length)!=0){
  53.       Mp3WriteRegister(SPI_MODE,0,SM_OUTOFWAV);
  54.       SendZerosToVS10xx();
  55.       return; //return without touching the value of playingState
  56.     }
  57.   }
  58.   SendZerosToVS10xx();
  59.  
  60.   // After finishing normally default to requesting to play next song        
  61.   playingState = PS_NEXT_SONG;
  62. }

Csak mert hiába próbálkozok a "lcd.print("asd");" sorral, azt hazudja hogy 'lcd' was not declared in this scope...
Valaki tipp?
A hozzászólás módosítva: Jan 17, 2015
(#) arduinoforever válasza Tetye hozzászólására (») Jan 17, 2015 /
 
Szia!
Hiányzik a "void setup" rész!!!

Talán így próbáld meg:

  1. #include "filesys.h"
  2.     #include "storage.h"
  3.     #include "string.h"
  4.     #include "mmc.h"
  5.     #include "player.h"
  6.     #include "config.h"
  7.     #include "ui.h"
  8.     #include "vs10xx.h"
  9.     #include <SoftwareSerial.h>
  10.     #include <LiquidCrystal.h>
  11.  
  12. void setup(){
  13.     LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
  14.     lcd.begin(16, 2);
  15.            }
  16.     extern SoftwareSerial mySerial;
  17.      
  18.     /** Playing State Global */
  19.      playingstatetype playingState = PS_NORMAL;
  20.      
  21.     unsigned char playStop = 1; // play or stop flag,1-play,0-stop
  22.      
  23.     unsigned char currentFile = 0;
  24.      
  25.     /** Plays a disk file. Returns 1) if the file ends or 2) if the global
  26.         variable playingState is not PS_NORMAL i.e. user has requested
  27.         stop or next or previous.*/
  28.     void PlayCurrentFile()
  29.     {
  30.        char c, nFragments;
  31.      
  32.       playingState = PS_NORMAL; /* Request to play normally */
  33.       //uiMode = UI_SPEC; /* User interface: show title SPECANA FOR VS1003*/
  34.       lcd.print("asd");
  35.       ///LcdLocateHome();
  36.       ///LcdPutConstantString("Opening ");
  37.      
  38.       //Serial.print("\r\nBuilding file fragment table...");
  39.      
  40.       //sectorAddress.l = album[currentAlbumCnt].track[currentFile].trackAddr.l;
  41.       delay(100);//delay here is very important, give some time to sd card.---by Icing
  42.       nFragments = BuildFragmentTable(); /* Too slow, rewrite! */
  43.      //Serial.print("Fragments: ");
  44.       //Serial.print(nFragments,DEC);
  45.      
  46.      
  47.      // LcdLocateHome();
  48.       ///LcdPutConstantString("Playing ");
  49.      
  50.       for (c=0; c<nFragments; c++){
  51.         sectorAddress.l = fragment[c].start;
  52.         //ConsoleWrite ("\r\nPlayer: Playing from sector ");
  53.         //ConsolePutUInt (sectorAddress.l);
  54.         if (PlayDiskSectors(fragment[c].length)!=0){
  55.           Mp3WriteRegister(SPI_MODE,0,SM_OUTOFWAV);
  56.           SendZerosToVS10xx();
  57.           return; //return without touching the value of playingState
  58.         }
  59.       }
  60.       SendZerosToVS10xx();
  61.      
  62.       // After finishing normally default to requesting to play next song      
  63.       playingState = PS_NEXT_SONG;
  64.     }
(#) Tetye válasza arduinoforever hozzászólására (») Jan 18, 2015 /
 
Szia!
Azért nem hiányzik mert amit láttál kód rész a a player.cpp fájlból származik.
A *.ino- ban benne van ott tudok is lcdt kezelni, de a ccp ben zajlik szinte minden, ha ki szeretnék íratni abból kell végre hajtani, de ez nem megy nekem.
Az ino csak ennyi:
  1. #include <avr/io.h>
  2. #include "config.h"
  3. #include "filesys.h"
  4. #include "player.h"
  5. #include "vs10xx.h"
  6. #include "record.h"
  7. #include <SoftwareSerial.h>
  8. #include <Wire.h>
  9. #include <LiquidCrystal_I2C.h>
  10.  
  11. LiquidCrystal_I2C lcd(0x20,16,2);  // set the LCD address to 0x20 for a 16 chars and 2 line display
  12. SoftwareSerial mySerial(2, 3);//pin2-Rx,pin3-Tx(note: pin3 is actually later used as volume down input)
  13.  
  14. void setup()
  15. {
  16.  lcd.init();                      // initialize the lcd
  17.    // Print a message to the LCD.
  18.  lcd.backlight();
  19.   Serial.begin(9600);
  20.   //Serial.println("Hello test!");
  21.  lcd.print("Hello, world 1!");
  22.   mySerial.begin(19200);// used for receiving command data from the iPod dock.
  23.   InitSPI();
  24.   InitIOForVs10xx();
  25.   InitIOForKeys();
  26.   InitIOForLEDs();
  27.   InitFileSystem();
  28.   Mp3Reset();
  29. }
  30.  
  31. void loop()
  32. {
  33. #if defined(__AVR_ATmega1280__)|| defined(__AVR_ATmega2560__)
  34.    // If play/stop button is pressed during boot, enter recording.
  35.    if (0== PSKey)
  36.    {
  37.          delay(20);
  38.          while(0 == PSKey);
  39.          delay(20);
  40.         Record();
  41.    }
  42. #endif
  43.    Play();  
  44.    while(1);
  45.  lcd.print("Hello, world 2!");  
  46. }
A hozzászólás módosítva: Jan 18, 2015
(#) kapu48 válasza Tetye hozzászólására (») Jan 18, 2015 /
 
Esetleg a Player.cpp-ből kiszednéd ezeket a sorokat:
11 LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
12 lcd.begin(16, 2);
(#) Tetye válasza kapu48 hozzászólására (») Jan 18, 2015 /
 
Én bele sem raktam oda.
Nekem azok csak az ino ban vannak benne.
Csak az lenne a lényeg hogy a cpp ből tudjak írni az lcdre.
(#) Gabó válasza Medve hozzászólására (») Jan 18, 2015 /
 
Na megtaláltam a gyári panelt, amihez volt csatlakoztatva a kijelző. Ahogy nézem a lábkiosztás ez lesz, legalább is a táplábak stimmelnek. A 2-3-4 és a 8-15ig mennek a prociba ellenállással.
Nézegettem az ebayen olyan kijelzőket amiknek van vezérlője, de amekkora méretbe már jó lenne, sajnos nagyon drágák. RICOH gépből vannak a kijelzők, nézegettem is rajzokat, de olyat nem találtam, amibe az elektronika is benne lenne. Csak mechanika. Nagyon hálás lennék, ha valaki a kijelzők lelki világába benne van, segítene beüzemelni.
(#) kapu48 válasza Gabó hozzászólására (») Jan 18, 2015 /
 
Nem lesz baj, hogy ez a beüzemelés, többe fog kerülni mint a legdrágább LCD?
(#) Gabó válasza kapu48 hozzászólására (») Jan 18, 2015 /
 
Ezt a részét kicsit ki tudod fejteni?
(#) kapu48 válasza Gabó hozzászólására (») Jan 18, 2015 /
 
Mivel semmi adatot nem találtál a neten a kérdéses LCD-ről!
Fogalmad nincs milyen vezérlőt kellene hozzá készíteni!
És még sosem csináltál ilyet?
Valószínű több száz munkaórádba kerülne, vagy még előbb tönkre tenéd!
Annyit meg nem tudsz érte fizetni, amennyiért valakinek érdemes lenne elvállalni!
A hozzászólás módosítva: Jan 18, 2015
(#) Gabó válasza kapu48 hozzászólására (») Jan 18, 2015 /
 
Azt tudom előre, hogy sok munkaóra lenne, de ez most jelenleg elhanyagolható, meg ismerőssel csináljuk, és ebbe a részbe is el szeretnénk menni.
Hasonló kijelzőhöz találtam leírást, csak az 4 bites, és pár láb más.
Esetleg van valami leírás, hogy működnek ezek, az alapoktól?
Ezt az oldalt ajánlották valamelyik forumon
Első nekifutásra annak is örülnénk, ha egy sort meg tudnánk jeleníteni.
(#) proba válasza Gabó hozzászólására (») Jan 18, 2015 /
 
Azzal kezdődik, hogy a kijelző típusát felderíted, és ehhez keresel valami kész megoldást. Ha ez nem jött be, lehet keresni a vezérlő chip típusát. Az után ahhoz adatlapot. Aztán már csak a próbálgatás jön, mely pixel mely kimenetre van kötve. Ha megjelenik rajta egy általad választott betű/karakter akkor már szinte mindent tudsz róla. Ha az első két feltétel közül egyik sem teljesül, szinte esélytelen vagy.
(#) Gabó válasza proba hozzászólására (») Jan 18, 2015 /
 
Régebben volt 1 oldal, ahol ugyan ezt a kijelzőt keltették életre, csak ott annyi volt, hogy program hamarosan. Azóta az oldal is megszűnt. Konkrétan arra a vezérlő chipre gondolsz, ami az LCD nyakán van a szalagkábelen? Mert semmi nincs ráírva.
Mostani gyors kutatásból megvan, milyen gépből lett bontva. Ricoch 1022
(#) kapu48 válasza Gabó hozzászólására (») Jan 19, 2015 /
 
Ezzel kellett volna kezdened!

Az LCD típusát itt közlik:
Ricoh Aficio 1022 / 1027 LCD - HVGA U14 B1 B0045216

Adatlapot ez alapján keresgélj!
Ha találtál várjuk a linket!
(#) snowboarder hozzászólása Jan 19, 2015 /
 
Sziasztok! Teljesen új vagyok az elektronikában ezért elnézést kérek, ha hülyeséget kérdezek. Egy kis mikro szervo motorral dolgozom most (5V, típus: SG90).
Ezt egy Arduino lapkához kötöm. Mindig amikor bekapcsolom az arduinot és motor hozzá van kötve, a motor forog egy nagyon kicsit. Nem értem hogy ez miért van.
A tippem az lenne, hogy bekapcsolásnál (áramforrásra kapcsolásnál) az arduino minden pinjén küld egy jelet és ezt érzékeli a motor. Ez csak tipp, lehet hogy hülyeség. Ha mégis ez az oka, akkor hogy lehet ezt letiltani. Nem forog nagyot, csak mintha egy kis impulzust kapna. Ez sajnos nekem nem jó mert elfordul (még ha kicsit is) a megadott pozícíóból.
A segítséget előre is köszönöm!
(#) Kera_Will válasza snowboarder hozzászólására (») Jan 19, 2015 /
 
Ne direktben legyen a port lábon a motorod !
Legalább 1 tranzisztor legyen előtte védődiódával.
Különben elbúcsúzhatsz az uC portjától mert az induktív feszültség vissza lökések tönkre teszik a félvezetőt.
Bekapcsolási tranziensek ellen védekezni kell.
Esetleg optocsatolóval leválasztva motor vezérlés és a uC portja.
A hozzászólás módosítva: Jan 19, 2015
(#) varttina válasza snowboarder hozzászólására (») Jan 19, 2015 /
 
Abba a motorba már bele van építve a vezérlőelektronika, nem feltétlen kell védődióda, viszont elővigyázatosságból érdemes berakni. Addig mozdulhat el a motor, amíg be nem állítod portot kimenetre, addig ugyanis bemenetként viselkedik, vagyis lebeg. Megoldást jelenthet, ha egy kb 1 kOhm ellenállással a motor bemenetét GND-re húzod, esetleg, ha a motor csak pár milliszekundummal később kapna tápfeszültséget, mint az Arduino. Másik megoldás, hogy kikapcsolás előtt elmented az aktuális pozíciót az EEPROM-ba, bekapcsoláskor pedig onnan kiolvasod, és visszaállítod a motort ugyanabba a pozícióba, ha netán elmozdult volna.
(#) proba válasza snowboarder hozzászólására (») Jan 19, 2015 /
 
Szerintem eléggé reménytelen minden körülmények között fix helyen tartani ezt a szervót. A táp rákapcsolásakor, vezérlőjelet nem adva neki már mozdul. Ha lehet, a mozdulás káros hatását kellene kiküszöbölni inkább .A táp rákapcsolásától a tökéletes jelalak beállításáig szerintem nem lehet megoldani hogy biztosan ne mozduljon.
(#) david10 hozzászólása Jan 19, 2015 /
 
Sziasztok,építettem egy csigarendszert,amelyen keresztül fel-le tudok mozgatni dolgokat.
Androidra irtam egy programot(átirtam ezt:BT Control)
Az Arduino Bluetooth-jával sikerült összebogoznom,de az a baj,hogyha megnyomom a telefonon a ''Vödröt Felemel!'' gombot,olyankor egyfolytában forog a motor.
Ugyanezt csinálja a vödröt lerak-al is.(Csak ott megváltozik az irány.)
Én ugy szeretném,hogy 400ms müködés után kikapcsoljon.
Aki tudja,hogy miért nem áll meg,azt kérem,hogy irja le.
Itt van a program kodja is:
  1. const int MotorPin5 = 5;
  2. const int MotorPin6 = 6;
  3.  byte serialA;
  4. void setup()
  5. {
  6.  Serial.begin(9600);
  7.  pinMode(MotorPin5, OUTPUT);
  8.  pinMode(MotorPin6, OUTPUT);
  9. }
  10. void loop() {
  11.  switch (serialA) {
  12.    case 1:
  13.      digitalWrite(MotorPin5, HIGH);
  14.      digitalWrite(MotorPin6, LOW);
  15.      delay(400);
  16.      digitalWrite(MotorPin5, LOW);
  17.      digitalWrite(MotorPin6, LOW);
  18.      delay(90000000);
  19.      break;
  20.    case 2:
  21.      digitalWrite(MotorPin5, LOW);
  22.      digitalWrite(MotorPin6, HIGH);
  23.      delay(400);
  24.      digitalWrite(MotorPin5, LOW);
  25.      digitalWrite(MotorPin6, LOW);
  26.      delay(90000000);
  27.      break;
  28.    case 3:digitalWrite(MotorPin6, LOW);
  29.      delay(100);
  30.  }
  31. }
  32. void serialEvent(){
  33. serialA = Serial.read();
  34. }

A választ előre is köszönöm!
(#) holex válasza david10 hozzászólására (») Jan 20, 2015 /
 
Gondolom azért, mert a SerialA-ban a legutolsó érték van, ezért újra és újra azt hajtja végre -> soha nem áll meg.
(#) Fizikus válasza snowboarder hozzászólására (») Jan 20, 2015 /
 
A szervo tapellatasat csak azutan kapcsold be, miutan az adott szervopoziciot beallito vezerlojelet mar raadtad a szervora. Igaz ez a megoldas egy i/o labat plusszban lefoglal.
(#) szikorapéter hozzászólása Jan 20, 2015 /
 
Üdv,olyan kérdésem volna hogy arduino uno-val icsp-n kersztül tudok-e kezelni Atmega168V típusú processzort,vagy akár programozni is azt? A válaszokat előre is köszönöm.
(#) david10 válasza holex hozzászólására (») Jan 20, 2015 /
 
És a programban mit kellene modositsak?
(#) proba válasza david10 hozzászólására (») Jan 20, 2015 /
 
Mikor befejezte a case-t adj a serialA-nak egy fals értéket.
A hozzászólás módosítva: Jan 20, 2015
(#) Kovidivi válasza david10 hozzászólására (») Jan 20, 2015 / 1
 
Meg hiányzik a default állapot, ami akkor fut le, ha egyik feltétel sem stimmel! Keress egy switch case példát, és látni fogod mire gondolok. Plusz a soros bejövő adat szerintem sosem 1baájt, mert minimum van egy /0 a végén.
(#) david10 válasza Kovidivi hozzászólására (») Jan 20, 2015 /
 
Erre jutottam:
  1. const int MotorPin5 = 5;
  2. const int MotorPin6 = 6;
  3.  byte serialA;
  4. void setup()
  5. {
  6.  Serial.begin(9600);
  7.  pinMode(MotorPin5, OUTPUT);
  8.  pinMode(MotorPin6, OUTPUT);
  9. }
  10. void loop() {
  11.  switch (serialA) {
  12.    case 1:
  13.      digitalWrite(MotorPin5, HIGH);
  14.      digitalWrite(MotorPin6, LOW);
  15.      delay(400);
  16.      digitalWrite(MotorPin5, LOW);
  17.      digitalWrite(MotorPin6, LOW);
  18.      delay(5000);
  19.      break;
  20.    case 2:
  21.      digitalWrite(MotorPin5, LOW);
  22.      digitalWrite(MotorPin6, HIGH);
  23.      delay(400);
  24.      digitalWrite(MotorPin5, LOW);
  25.      digitalWrite(MotorPin6, LOW);
  26.      delay(5000);
  27.      break;
  28.    default:
  29.     digitalWrite(MotorPin6, LOW);
  30.     digitalWrite(MotorPin5, LOW);
  31.    break;
  32.  }
  33. }
  34. void serialEvent(){
  35. serialA = Serial.read();
  36. }

Sajnos igy ezt csinálja:Amikor megnyomom a Vödröt felemel-t,olyankor 400ms-ot forog a motor,és 5000ms-ot nem forog,és utána kezdi elölről.A folyamat közben irányitani sem lehet.
proba:Sajnos nem értem,hogy hogyan lehetne a SerailA-nak false-t adni.
(#) csatti2 válasza david10 hozzászólására (») Jan 20, 2015 / 1
 
Félreértetted mit akart mondani (mondjuk nem kellett volna a false-ot emlegetnie).
A case 1: és a case 2: után szúrd be azt, hogy serialA = 0;
Mielőtt valaki beleköt ebbe, gondoljon arra, hogy az eseménykezelés meghívódhat a case structure futása alatt is és így elveszik egy gombnyomás. Ha viszont el akarod veszíteni a gombnyomást (meg akarod akadályozni, hogy egy bizonyos ideig rá lehessen indítani) akkor viszont a delay(5000); utánra tedd, amit írtam.

A serialA declarációja viszont nem az igazi. Ha növeled a programodat, fura hibáid lehetnek később.
Írd át így : byte serialA; => volatile byte serialA = 0;

A volatile kulcsszó a fordítónak szól és arra utasítja, hogy ne próbálja meg kioptimalizálni a megadott változót. Amikor megszakításokban változtatsz egy adott változót, akkor magától nem tudhatja a fordító, hogy a változó az éppen fordított kódrészlettől függetlenül is változhat és ezért megpróbálhatja egyszerűsíteni a végeredményt, hogy jobb hatásfokú kód legyen a végeredmény (ami persze nem működik). A volatile tehát kikapcsolja ezt az optimalizációt a változóra nézve.
A hozzászólás módosítva: Jan 20, 2015
(#) Hp41C válasza csatti2 hozzászólására (») Jan 20, 2015 /
 
Szerintem inkább egy bool változó kellene, ami tárolja, hogy van-e feldolgozatlan parancs.
  1. volatile bool CommandWaiting = false;

A változót a SeaialEvent függvénynek kell true -ra állítani, mikor már feltöltötte a serialA változót.
  1. void serialEvent(){
  2. serialA = Serial.read();
  3. CommandWaiting = true;
  4. }

A loop függvény csak akkor dolgozza fel a serialA -t, ha a bool változó értéke 1, és rögtön állítsa false -re.
  1. void loop() {
  2.  if (CommandWaiting)
  3.  {
  4.   CommandWaiting = false;
  5.  switch (serialA) {
  6.    case 1:
  7.      digitalWrite(MotorPin5, HIGH);
  8.      digitalWrite(MotorPin6, LOW);
  9.      delay(400);
  10.      digitalWrite(MotorPin5, LOW);
  11.      digitalWrite(MotorPin6, LOW);
  12.      delay(5000);
  13.      break;
  14.    case 2:
  15.      digitalWrite(MotorPin5, LOW);
  16.      digitalWrite(MotorPin6, HIGH);
  17.      delay(400);
  18.      digitalWrite(MotorPin5, LOW);
  19.      digitalWrite(MotorPin6, LOW);
  20.      delay(5000);
  21.      break;
  22.    default:
  23.     digitalWrite(MotorPin6, LOW);
  24.     digitalWrite(MotorPin5, LOW);
  25.    break;
  26.   }
  27.  }
  28. }

Továbbfejlesztés: A serialA helyett egy körforgó buffer alkalmazása, amibe a serialEvent beírja a vett karaktert, ha belefér és lépteti az írási mutatót, növeli a darabszámot. Egy új függvény, ami kiolvassa a soron következő parancsot, lépteti az olvasási mutatót, csökkenti a darabszámot. Ezt a függvényt hívja a loop. A darabszám volatile char legyen, a csökkentést és a növelést pimitív műveletként (megszakíthatatlan) kell megvalósítani.
(#) david10 válasza Hp41C hozzászólására (») Jan 20, 2015 /
 
Hogyha azokat a modosításokat használom,akkor azt a hibát adja ki,hogy a 'SerialA'-t nem ismeri.
A hozzászólás módosítva: Jan 20, 2015

he.PNG
    
(#) Kaszagabor hozzászólása Jan 20, 2015 /
 
Sziasztok!
van egy klímavezérlő progim amivel gondjaim vannak:
  1. #include <LiquidCrystal.h>
  2. const int MotorAufPin = 11;
  3. const int MotorZuPin = 10;
  4. const int MotorEnable = 9;
  5. const int MotorGeschwindigkeitPin = A0;
  6. const int SensorPinAbluft = 2;
  7. const int SensorPinZuluft = 3;
  8. const int SensorPinPoti = A1;
  9. int SensorPinPotitemperature;
  10. int MotorGeschwindigkeit = 0;
  11. LiquidCrystal lcd(3, 4, 7, 8, 5, 6);
  12.  
  13. void setup()
  14. {
  15. lcd.begin(24, 2);
  16. Serial.begin(9600);
  17. pinMode(MotorAufPin, OUTPUT);
  18. pinMode(MotorZuPin, OUTPUT);
  19. pinMode(MotorEnable, OUTPUT);
  20. digitalWrite(MotorEnable, LOW);
  21.  
  22. }
  23.  
  24. void loop()
  25. {
  26. int SensorPinAbluftval = analogRead(SensorPinAbluft);
  27. float SensorPinAbluftvoltage = (SensorPinAbluftval/1024.0) * 5.0;
  28. float SensorPinAblufttemperature = (SensorPinAbluftvoltage - .5125) * 100;
  29. int SensorPinZuluftval = analogRead(SensorPinZuluft);
  30. float SensorPinZuluftvoltage = (SensorPinZuluftval/1024.0) * 5.0;
  31. float SensorPinZulufttemperature = (SensorPinZuluftvoltage - .5125) * 100;
  32. int SensorPinPotiVal = analogRead(SensorPinPoti);
  33. SensorPinPotitemperature = map(SensorPinPotiVal, 0, 1023, 20, 30);
  34. Serial.print(SensorPinZulufttemperature);
  35. MotorGeschwindigkeit = analogRead(MotorGeschwindigkeitPin)/4;
  36. if(SensorPinAblufttemperature >= SensorPinPotitemperature & SensorPinAblufttemperature > SensorPinZulufttemperature){
  37.   lcd.setCursor(13, 1);
  38.   lcd.print("Kl. Auf");
  39.   digitalWrite(MotorAufPin, HIGH);
  40.   digitalWrite(MotorZuPin, LOW);
  41.   analogWrite(MotorEnable, MotorGeschwindigkeit);
  42.   }
  43.   else {
  44.     delay(3000);
  45.     lcd.setCursor(13, 1);
  46.     lcd.print("Kl. Zu ");
  47.     digitalWrite(MotorAufPin, LOW);
  48.     digitalWrite(MotorZuPin, HIGH);
  49.     analogWrite(MotorEnable, MotorGeschwindigkeit);
  50.     }
  51.  
  52.  lcd.setCursor(0, 0);
  53.  lcd.print("Zu.:");
  54.  lcd.setCursor(5, 0);
  55.  lcd.print(SensorPinZulufttemperature);
  56.  lcd.setCursor(10, 0);
  57.  lcd.print("C");
  58.  lcd.setCursor(0, 1);
  59.  lcd.print("Ab.:");
  60.  lcd.setCursor(5, 1);
  61.  lcd.print(SensorPinAblufttemperature);
  62.  lcd.setCursor(10, 1);
  63.  lcd.print("C");
  64.  lcd.setCursor(12, 0);
  65.  lcd.print("Gr.:");
  66.  lcd.setCursor(17, 0);
  67.  lcd.print(SensorPinPotitemperature);
  68.  lcd.setCursor(19, 0);
  69.  lcd.print("C");
  70.  delay(3000);
  71. }

Az a gond: Nem tudom milyn kóddal lehetne megoldani azt, hogy a szenzorok olvasása és a képernyő ftissítése valósidejű legyen. A motor vezérlése csak 5---10 percenként teljesüljön.
Még kezdő vagyok és nemtudok rájönni a megoldásra.
Válaszotokat előre is köszönöm.
Üdv Gábor
Következő: »»   77 / 854
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