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   212 / 845
(#) tomat5 válasza tomat5 hozzászólására (») Ápr 14, 2016 /
 
Fejlemény:
A nem működő nano-k a program biztosn fut, mert a led megszakításból villog. Azonban reset gomb megnyomása után elindul az ethernet is. A setupba beraktam késleltetéseket ide oda (pl ethernet.begin() elé után, de nem számít. Uno board-on is simán indul.
(#) tomat5 válasza Kovidivi hozzászólására (») Ápr 14, 2016 /
 
Köszi a választ.
Lábkiosztást ellenőriztem, azonos, és azóta fenti hozzászólásom szerint elindul, csak nem magától.
(#) icserny válasza tomat5 hozzászólására (») Ápr 14, 2016 /
 
Azt tudom még elképzelni, hogy nem teljesen azonos a bootloaderük.
(#) tomat5 válasza icserny hozzászólására (») Ápr 14, 2016 /
 
Köszi
Megpróbálok rátölteni az egyikre egy "gyárit" az IDE-ből aztán meglátjuk.
(#) sejtek hozzászólása Ápr 14, 2016 /
 
Sziasztok

Van valakinek tapasztalata arduinoval való hőmérséklet szabályozással?
Egy pt100-ast és egy 1K ellenállást kötöttem feszültségosztóként az analog bemenetre, de nagyon pontatlan. Felszereltem egy lcd kijelzőt is, azon lehet látni, hogy 10-20 fokot ugrál a beolvasott hőmérséklet érték. meg lehet valahogy oldani, hogy egy fokon belül legyen a pontosság?
(#) david10 válasza tomat5 hozzászólására (») Ápr 14, 2016 /
 
Probáld meg ezt:
Tegyél be a void(setup)-ba egy kb. 10 másodperces delayt.
Szerintem a CH340G-s nano hamarabb elindul, mint az ethernet modul.
(#) Kera_Will válasza sejtek hozzászólására (») Ápr 15, 2016 /
 
Elég karcsú ez az egyszerű feszültség osztós hőmérő hardver elrendezés.
Illene inkább mellé rakni egy analóg mérőerősítős áramkört (műveleti erősítővel).
Aztán ami ebből kijön analóg jel azt rá küldeni a AD konverter bemenetére.
No meg több mérési ciklus átlagát venni és csak azt jelezni ki.
Mert akkor talán nem "lebegne" ennyire a kijelzett értéked.
Az ellenállás karakterisztikáját se ártana felvenni és akkor ennek a táblázatnak az eredményeit beépíteni a programba. Ezzel némi kompenzációt is tennél a pontosabb hőfok méréshez.
Persze elvileg lineáris a pt100 ezért szeretjük.
Lehet inkább pt1000 kellene választanod mert 1k ellenállással osztasz.
No meg azt se felejtsük el , hogy az ellenálláson átfolyó mérő áram is felfűti .
Így azt nem csak a környezeti hőmérséklet befolyásolja , hanem a rajta átfolyó mérő áram is.
Nem is olyan egyszerű ez a pt100 használata.
A hozzászólás módosítva: Ápr 15, 2016
(#) Kera_Will válasza sejtek hozzászólására (») Ápr 15, 2016 /
 
0-200 fok között kb.: 80 ohm változás történik.
Ez a 80 ohm változás 1k ellenállásosztó esetén nagyon kicsi max 50-100mv változást eredményez.
Légy szíves számolj utána ha delta R 80 ohm akkor mekkora delta U jön létre az feszültség osztó kimenetén 5V tápfesz esetén . Ezután pedig azt számold ki, hogy az 50-100mv változás hány bitnyi változást eredményez az AD kimeneti adataiban.
Ebből kiderülhet mekkora felbontásod és pontosságod lehet a hőmérséklet megjelenítésénél.
Ha ezekkel nem vagy tisztában akkor légy szíves utána nézni ezeknek az alapvető elektronikai ismereteknek!
A hozzászólás módosítva: Ápr 15, 2016
(#) Kera_Will válasza Kera_Will hozzászólására (») Ápr 15, 2016 /
 
Idézet:
„50-100mv”
===>>> 50-100 mV [milli Volt]

A hozzászólás módosítva: Ápr 15, 2016
(#) kapu48 válasza Kera_Will hozzászólására (») Ápr 15, 2016 /
 
(#) rufika hozzászólása Ápr 15, 2016 /
 
Sziasztok! Lehet hülye kérdés de, hogy lehet azt megoldani hogy 2 tizedes jegy helyett egyet írjon ki az lcd kijelzőre a program pl: 10.22 helyett 10.2?
  1. sensorVoltage = analogRead(3);   // read the sensor voltage jobb hátsó szenzor a2 bemenet
  2. float   psi3 = ((sensorVoltage-95)/204)*50*0.0689;
  3. lcd.setCursor (10,1);
  4. lcd.print (psi3);
  5. lcd.print ("");
  6. Serial.println (psi3);
  7. delay (100);

Ez a program egy részlete
A hozzászólás módosítva: Ápr 15, 2016
(#) icserny válasza rufika hozzászólására (») Ápr 15, 2016 / 1
 
  1. cd.print (psi3,1);
A hozzászólás módosítva: Ápr 15, 2016
(#) rufika válasza icserny hozzászólására (») Ápr 15, 2016 /
 
Hova írjam be ? Mer nem működik . Mer így meg lett még 4 tizedes szám is a kijelzőn
A hozzászólás módosítva: Ápr 15, 2016
(#) icserny válasza rufika hozzászólására (») Ápr 16, 2016 / 1
 
Lebegőpontos számok kiíratásnál a print-nek megadhatsz egy második paramétert, ez lesz a kiírandó tizedesek száma. Tehát a meglevő kiíratásaidba szűrd be egy vesszővel elválasztva az 1-et!
(#) rufika válasza icserny hozzászólására (») Ápr 16, 2016 /
 
Kösz így működik!
(#) jeges hozzászólása Ápr 16, 2016 /
 
Sziasztok!
Soros port ékezetes betű kezelésel vanak problémák !

  1. unsigned char thisByte[] = {
  2.       "ÁÉÍÓÖŐÚÜŰáéíóőóüű"}; // text out
  3.     int i=0;
  4.      
  5.     void setup() {
  6.       delay(1000);
  7.       //Initialize serial and wait for port to open:
  8.       Serial.begin(9600);
  9.       while (!Serial) {
  10.         ; // wait for serial port to connect.
  11.       }
  12.      
  13.       // prints title with ending line break
  14.       Serial.println("ASCII Table ~ Character Map");
  15.     }
  16.      
  17.     void loop() {
  18.       while (i<sizeof(thisByte))  {
  19.         // prints value unaltered, i.e. the raw binary version of the
  20.         // byte. The serial monitor interprets all bytes as
  21.         // ASCII, so 33, the first number,  will show up as '!'
  22.         Serial.write(thisByte[i]);  
  23.      
  24.         Serial.print(", dec: ");
  25.         // prints value as string as an ASCII-encoded decimal (base 10).
  26.         // Decimal is the  default format for Serial.print() and Serial.println(),
  27.         // so no modifier is needed:
  28.         Serial.print(thisByte[i]);    
  29.         // But you can declare the modifier for decimal if you want to.
  30.         //this also works if you uncomment it:
  31.      
  32.         // Serial.print(thisByte, DEC);
  33.      
  34.      
  35.         Serial.print(", hex: ");
  36.         // prints value as string in hexadecimal (base 16):
  37.         Serial.print(thisByte[i], HEX);    
  38.      
  39.         Serial.print(", oct: ");
  40.         // prints value as string in octal (base 8);
  41.         Serial.print(thisByte[i], OCT);    
  42.      
  43.         Serial.print(", bin: ");
  44.         // prints value as string in binary (base 2)
  45.         // also prints ending line break:
  46.         Serial.println(thisByte[i], BIN);  
  47.         delay(100);
  48.         i++;
  49.       }
  50.     }


És amit vissza ad rossz!

  1. ASCII Table ~ Character Map
  2. Ă, dec: 195, hex: C3, oct: 303, bin: 11000011
  3. �, dec: 129, hex: 81, oct: 201, bin: 10000001
  4. Ă, dec: 195, hex: C3, oct: 303, bin: 11000011
  5. ‰, dec: 137, hex: 89, oct: 211, bin: 10001001
  6. Ă, dec: 195, hex: C3, oct: 303, bin: 11000011
  7. Ť, dec: 141, hex: 8D, oct: 215, bin: 10001101
  8. Ă, dec: 195, hex: C3, oct: 303, bin: 11000011
  9. “, dec: 147, hex: 93, oct: 223, bin: 10010011
  10. Ă, dec: 195, hex: C3, oct: 303, bin: 11000011
  11. –, dec: 150, hex: 96, oct: 226, bin: 10010110
  12. Ĺ, dec: 197, hex: C5, oct: 305, bin: 11000101
  13. �, dec: 144, hex: 90, oct: 220, bin: 10010000
  14. Ă, dec: 195, hex: C3, oct: 303, bin: 11000011
  15. š, dec: 154, hex: 9A, oct: 232, bin: 10011010
  16. Ă, dec: 195, hex: C3, oct: 303, bin: 11000011
  17. ś, dec: 156, hex: 9C, oct: 234, bin: 10011100
  18. Ĺ, dec: 197, hex: C5, oct: 305, bin: 11000101
  19. °, dec: 176, hex: B0, oct: 260, bin: 10110000
  20. Ă, dec: 195, hex: C3, oct: 303, bin: 11000011
  21. ˇ, dec: 161, hex: A1, oct: 241, bin: 10100001
  22. Ă, dec: 195, hex: C3, oct: 303, bin: 11000011
  23. ©, dec: 169, hex: A9, oct: 251, bin: 10101001
  24. Ă, dec: 195, hex: C3, oct: 303, bin: 11000011
  25. ­, dec: 173, hex: AD, oct: 255, bin: 10101101
  26. Ă, dec: 195, hex: C3, oct: 303, bin: 11000011
  27. ł, dec: 179, hex: B3, oct: 263, bin: 10110011
  28. Ĺ, dec: 197, hex: C5, oct: 305, bin: 11000101
  29. ‘, dec: 145, hex: 91, oct: 221, bin: 10010001
  30. Ă, dec: 195, hex: C3, oct: 303, bin: 11000011
  31. ł, dec: 179, hex: B3, oct: 263, bin: 10110011
  32. Ă, dec: 195, hex: C3, oct: 303, bin: 11000011
  33. Ľ, dec: 188, hex: BC, oct: 274, bin: 10111100
  34. Ĺ, dec: 197, hex: C5, oct: 305, bin: 11000101
  35. ±, dec: 177, hex: B1, oct: 261, bin: 10110001

Mi lehet probléma?
(#) icserny válasza jeges hozzászólására (») Ápr 16, 2016 /
 
Idézet:
„Serial.println("ASCII Table ~ Character Map");”
Az ASCII kódtábla tudtommal csak 127-ig tart. Efölött a DOS, a Windows, az ISO-akárhány, az UTF-8 mind másképp értelmezik a kódokat. Mindamellett a Windows programkönyvtárak öntevékenyen át is kódolhatják vagy csonkíthatják a (virtuális) soros porton bejövő kódokat. Néhány éve vért izzadtam, mire egy Visual C++-ban írt mintaalkalmazásban ki tudtam kapcsolni a beérkező kódok 7 bitesre történő csonkítását.

Még érdekesebb, ha például az Arduino programot Windows alatt ANSI kódolással gépelted be, a kiíratást pedig Linux ablakban Unicode kódolású fontbeálítással íratod ki...
(#) kapu48 válasza jeges hozzászólására (») Ápr 16, 2016 / 1
 
Megoldás:
The extended ASCII codes (character code 128-255)

  1. unsigned char thisByte[] = {
  2.   193, 201, 205, 211, 214, 218, 220, 219};
  3.  // "ÁÉÍÓÖŐÚÜŰ"}; // text out


  1. ASCII Table ~ Character Map
  2. Á, dec: 193, hex: C1, oct: 301, bin: 11000001
  3. É, dec: 201, hex: C9, oct: 311, bin: 11001001
  4. Í, dec: 205, hex: CD, oct: 315, bin: 11001101
  5. Ó, dec: 211, hex: D3, oct: 323, bin: 11010011
  6. Ö, dec: 214, hex: D6, oct: 326, bin: 11010110
  7. Ú, dec: 218, hex: DA, oct: 332, bin: 11011010
  8. Ü, dec: 220, hex: DC, oct: 334, bin: 11011100
  9. Ű, dec: 219, hex: DB, oct: 333, bin: 11011011
(#) proZac hozzászólása Ápr 17, 2016 /
 
Heellooo !

Nagyon kezdő vagyok a témában, még hardware-em sincs, de bőszen tanulok hetek óta
Szeretnék egy automata gomba termődobozt készíteni de mire megjön a cuccom
egy kész kóddal szeretnék előállni .

Lényeg a következő ...


28foknál kapcsoljon BE egy akvárium melegítő, 31foknál KI...

80%-os páratartalomnál a párásító BE, 95%-nál KI... !


A DHT22 alapból Celsius és % mértékegységű, vagy kell konvertálnom fahrenheit-ből celsiusba?

Ha igen, akkor a kód mely részében kell megadnom a konverzió kódját? setupban vagy loopban?


Jöjjön a KÓD


#include <LiquidCrystal.h>
#include <dht22.h>
LiquidCrystal lcd (12,11,5,4,3,2);
dht DHT22
#define DHT22 7;
#define HEATERRELAY 8;
#define FOGGERRELAY 9;

void setup()
{
lcd.begin(16,2);
pinMode(HEATERRELAY, OUTPUT);
digitalWrite(HEATERRELAY, LOW);
pinMode(FOGGERRELAY, OUTPUT);
digitalWrite(FOGGERRELAY, LOW);
delay (5000);
}
void loop()
{
DHT22 = DHT.read22(DHT22);
lcd.setCursor(0,0);
lcd.print ( ̎Temperature = ̎ );
lcd.print(DHT22.temperature);
lcd.clear;
delay(6000);
}

if(DHT22.temperature < 28)
{
digitalWrite(HEATERRELAY, HIGH);
}
else
{
digitalWrite(HEATERRELAY, LOW);
}

if(DHT22.temperature > 31)
{
digitalWrite(HEATERRELAY, LOW);
}
else
{
digitalWrite(HEATERRELAY, HIGH);
}


DHT22 = DHT.read22(DHT22);
lcd.setCursor(0,1);
lcd.print( ̎ Humidity = ̎ );
lcd.print(DHT22.humidity);
lcd.clear;
delay(6000);

if(DHT22.humidity < 80)
{
digitalWrite(FOGGERRELAY, HIGH);
}
else
{
digitalWrite(FOGGERRELAY, LOW);
}

if(DHT22.humidity > 95)
{
digitalWrite(FOGGERRELAY, LOW);
}
else
{
digitalWrite(FOGGERRELAY, LOW);

delay(6000);



A fő kérdés a következő lenne... kell-e a második if-else függvény a hőmérsékletnél és a páratartalomnál?
Tehát ami kikapcsolja a relét, ha eléri a kívánt tartományt!?!?!?!
(#) mps válasza proZac hozzászólására (») Ápr 17, 2016 /
 
Szia! Gondold át mit is akarsz. 28-31 közt tartani a hőmérsékletet. Tehát ha kevesebb mit 28 fok be kell kapcsolni, ha több mint 31 akkor ki. Vagyis az else ágak nem kellenek. Tehát egy tulajdonsághoz csak simán két if. Egyik bekapcsol ha kissebb az érték a minimumnál, a másik pedig kikapcsol ha a maximumnál nagyobb. Így ha mondjuk 29 fok van, az első if-ed már ki is kapcsolja, majd a második mivel nincs 31 be is kapcsolja. Szegény relé azt sem fogja tudni mit csináljon
(#) szili83 válasza szili83 hozzászólására (») Ápr 17, 2016 /
 
Valaki segítene a DS3231-ben? nem igazán értem.
(#) siletto válasza szili83 hozzászólására (») Ápr 17, 2016 /
 
Melyik része nem működik? A legegyszerűbb tutorial elég jó, megmutatja hogy állítsd be az időt, stb
(#) proZac hozzászólása Ápr 17, 2016 /
 
Köszi szépen . Esetleg egy copy + paste és kiegészitéssel meg tudnád mutatni mire gondolsz ? Mert 3 hetet olvastam kb napi 5órákat, mire ennyi összejött . 3 hete még az arduinorol sem hallottam, nemhogy a C nyelvröl, uh most kicsit magas amit javasolsz :-$ . Tehát csak if függvény kell ?
(#) Kera_Will válasza proZac hozzászólására (») Ápr 17, 2016 /
 
Jó lenne ha a bekért adatokat (fok/pára%) inkább átlagoljad 5-10 mérés átlagát vennéd alapul amiket időben eltolva pár tized sec-el olvasol be.
Akkor elkerülhetőek lesznek a kijelzőn ugráló számok és a relék felesleges kapcsolgatása , habár ezt a bekódolt széles tartományú hiszterézis megoldja.
A DHT adatlapjában benne van a F/C° váltás mikéntje, vagy amit használsz DHT-t támogató könyvtár (header fájl dht22.h) leírása ezt is tartalmazhatja , ha más nem a hozzá adott minta forráskódok tanulmányozása biztos segítséget adhat a használatára .
Ha mégis kell F/C° konverziós függvény. Akkor érdemesebb külön megírni egyszer és meg meg hívni a futás során ha szükséges.
(#) proZac hozzászólása Ápr 17, 2016 /
 
Huhhh, konkrétan nem tudnád javítani a kódot ? Mert így elég kínai, így is angol oldalakról tanultam és vadásztam össze...arduino.cc , youtube meg különböző fórumok

Elvileg ez lett volna az eredeti...

void loop()
{
DHT22 = DHT.read22(DHT22);
lcd.setCursor(0,0);
lcd.print ( ̎Temperature = ̎ );
lcd.print(DHT22.temperature);
lcd.clear;
delay(6000);

if(DHT22.temperature < 28)
{
digitalWrite(HEATERRELAY, HIGH);
}
else
{
digitalWrite(HEATERRELAY, LOW);
}


DHT22 = DHT.read22(DHT22);
lcd.setCursor(0,1);
lcd.print( ̎ Humidity = ̎ );
lcd.print(DHT22.humidity);
lcd.clear;
delay(6000);

if(DHT22.humidity < 80)
{
digitalWrite(FOGGERRELAY, HIGH);
}
else
{
digitalWrite(FOGGERRELAY, LOW);
}


//END
(#) Kera_Will válasza proZac hozzászólására (») Ápr 17, 2016 /
 
60 nap arduinos online tanfolyam !
tavir oldal
60napos
Ha erre mozdulsz, akkor ennyi idő alatt már I^2C órát építettél volna ...
Nem kérdeznél feleslegesen ...
A hozzászólás módosítva: Ápr 17, 2016
(#) proZac hozzászólása Ápr 17, 2016 /
 
5ik leckét kaptam ma éjfél 04-kor de az még nem érdemleges... 7 angol kézikönyvet töltöttem le, 3 hete napi 5 órát olvasok ... de valahogy még nem áll össze, ezért kértem segítséget . Ha látnék példát, hogy mire gondoltok, többször nem kérdezném
(#) Kovidivi válasza proZac hozzászólására (») Ápr 17, 2016 /
 
Ezt a páratartalmat még gondold át. 80-95%? Egyszerűbb, ha feltöltöd a szobát vízzel! Ekkora páratartalmat létrehozni nehéz mutatvány, a DHT pedig 95% körül óriási hibával dolgozik. A két szélsőértéknél az értékek csak sacc jellegűek.
(#) Kera_Will válasza Kera_Will hozzászólására (») Ápr 17, 2016 /
 
Másik irodalom :
interkonyv.hu Arduino programozas
Van számtalan ingyenes más témájú könyv is!A regisztráció után a "megrendelt" PDF formátumú könyvet olyan fejléccel generálják le amilyen néven regisztráltál !
(#) proZac hozzászólása Ápr 17, 2016 /
 
Köszönöm az irodalmat, rálesek .

Kovi, köszi a hozzászólást, hálisten nem szobába kell . A tervezett hardware, Arduino Uno, Dht22,lcd,akvárium melegitö és ultrahangos párásító . A cél pedig egy teljesen automata gomba termődoboz, ahol 28 és 30 fok közötti állandó hőmérsékletet kellene biztosítanom és közel 100%-os állando páratartalmat, de a 90%-körülivel is megelégszem, szóval ha vki tud alternatívát, hogyan tudom állandóan biztosítani ezeket az értékeket, legyen kedves, ossza meg velem
Következő: »»   212 / 845
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