Keresés

Részletes keresés

spiler0078 Creative Commons License 2016.12.22 0 0 2622

Szia Sploc!

 

Kicseréltem egy másik Mega2560-ra az alaplapom és most már kapok adatot, ha a nextion-t tapizom (nyomkodom a gombokat) :).

 

Szóval köszi a segítséget, és persze köszi mindenkinek, aki hozzászólt!! :)

 

Nyomom tovább a projektet aztán majd referálok, hogy hogy áll a "Smart vezérlőm"...

 

Cső

Spiler

Előzmény: Sploc (2573)
Gogol69 Creative Commons License 2016.12.22 0 0 2621

Nagyon örülnék ha valamelyik ebben a témában jártas fórumtárs segítene!

Igaz ez nektek bagatel, nekem most per pillanat nagy probléma.

Előzmény: Gogol69 (2620)
Gogol69 Creative Commons License 2016.12.22 0 0 2620

Hiba elhárítva!

A hiba az volt hogy a soros porti monitor még nyitva volt.

Most egy olyan problémám van, hogy az I2C-n LCD nem jelez ki megfelelően.

4 db DS18b20-t szeretnék használni.

A kódjukat már megtaláltam & a programba beírtam.

Ha soros porton figyelem mindegyik szépen dolgozik. 20.00--30.00C stb.

 

 Kijelzőre kiírva rossz & nagyon változó az értéke       2,12---3,80 között ugrál.

 lcd.print(sensors.getTempCByIndex(0));

Amit észre vettem még az az hogy ha a kijelzőre kiírok valamit így: lcd.print("Puffer");

 Akkor az első karaktert jeleníti meg csak.

 

Feltételezem, hogy a hogy a  DS18b20 érték kijelzésénél is ugyan az a hiba.

Mi lehet a gond? 

Előzmény: Gogol69 (2616)
Prof Creative Commons License 2016.12.21 0 0 2619

Szia,

Az okról nem tudok nyilatkozni, millió egy lehet. Ha a mérés valóban így inkonzisztens, ahogy írod, akkor a néhány héttel ezelőtt részleteiben tárgyalt átlagolós módszer hozhat megoldást, mivel bármely 5 mérés legalacsonyabb és legmagasabb értékét kiejted az átlagból, a maradék viszonylag nagy megbízhatósággal az elvárt eredményt fogja hozni. Persze tesztelni kell, és az sem árt, ha a probléma forrását szünteted meg.

Az arduino.cc fórumán olvasva javasolnak kondenzátorokat az érzékelő kimenete és a föld közé, a kábel mindkét végére (0,1 uF), ezzel a zaj jelentős részét ki tudod szűrni (de nem mindet). Hathatós megoldás lehet még a mérés gyakoriságának csökkentése (akár több másodperces, esetleg egy perces közökkel).
Nekem előfordult, hogy fordítva kötöttem be, akkor produkált furcsa méréseket (meg jelentős melegedést is).
Üdv,

Prof

Előzmény: Tomiali (2618)
Tomiali Creative Commons License 2016.12.21 0 0 2618

Mit csesztem el?????

 

Előzmény: Tomiali (2617)
Tomiali Creative Commons License 2016.12.21 0 0 2617

Senkinek  nincs ötlete?

 

Előzmény: Tomiali (2607)
Gogol69 Creative Commons License 2016.12.21 0 0 2616

Hogyan lehet arduino nano programot módosítani ha sorosportra küldene adatokat?

Gogol69 Creative Commons License 2016.12.21 0 0 2615

Probléma megoldva!

 

Innen http://forum.arduino.cc/index.php?topic=143382.0

 

Ezzel:


/* YourDuino Example: Find Address of a DS18B20 Temperature Sensor
Cut and paste the address to a text file for later use.
V1.1 01/17/2013
Questions: terry@yourduino.com 

Connections:
DS18B20 Pinout (Left to Right, pins down, flat side toward you)
- Left   = Ground
- Center = Signal (Pin 2):  (with 3.3K to 4.7K resistor to +5 or 3.3 )
- Right  = +5 or +3.3 V   
This sketch looks for 1-wire devices and  prints their addresses (serial number)
to the Serial Monitor in a format that is useful in Arduino sketches.
Based on example at: 
http://www.hacktronics.com/Tutorials/arduino-1-wire-address-finder.html
*/

/*-----( Import needed libraries )-----*/
#include <OneWire.h>

/*-----( Declare Constants and Pin Numbers )-----*/
#define SENSOR_PIN 2  // Any pin 2 to 12 (not 13) and A0 to A5

/*-----( Declare objects )-----*/
OneWire  ourBus(SENSOR_PIN);  // Create a 1-wire object

void setup()  /****** SETUP: RUNS ONCE ******/
{
 Serial.begin(9600);

 discoverOneWireDevices();  // Everything happens here!
}//--(end setup )---

void loop()   /****** LOOP: RUNS CONSTANTLY ******/
{
 // Nothing happening here
}

/*-----( Declare User-written Functions )-----*/
void discoverOneWireDevices(void) {
 byte i;
 byte present = 0;
 byte data[12];
 byte addr[8];

 Serial.print("Looking for 1-Wire devices...nr");// "nr" is NewLine 
 while(ourBus.search(addr)) {
   Serial.print("nrnrFound '1-Wire' device with address:nr");
   for( i = 0; i < 8; i++) {
     Serial.print("0x");
     if (addr[i] < 16) {
       Serial.print('0');
     }
     Serial.print(addr[i], HEX);
     if (i < 7) {
       Serial.print(", ");
     }
   }
   if ( OneWire::crc8( addr, 7) != addr[7]) {
     Serial.print("CRC is not valid!nr");
     return;
   }
 }
 Serial.println();
 Serial.print("Done");
 ourBus.reset_search();
 return;
}

//*********( THE END )***********

Előzmény: Gogol69 (2614)
Gogol69 Creative Commons License 2016.12.21 0 0 2614

Sziasztok!

DS18B20-k címét szeretném megkeresni.

Ezt már megtaláltam! : https://www.hacktronics.com/Tutorials/arduino-1-wire-address-finder.html

Sajnos itt viszont az ,,one_wire_address_finder" könyvtárat valamiért nem tudom beilleszteni.

Mit kellene más hogyan tennem?

Törölt nick Creative Commons License 2016.12.20 0 0 2613

Létezik, hogy a CTE 3.2" LCD 2 heti, napi 12 órás üzem után elvesztette érintő képernyő funkcióját?

Prof Creative Commons License 2016.12.20 0 0 2612

Szia,

A boolean-re ott a pont. A többit köszönöm, most nem van agyam felfogni ezeket. :-(
A bajom az, hogy mennyire viszi el a hétköznapi földi halandó gondolkodását az, hogy össze-vissza kavarják a fejükben a dolgokat?

Előzmény: Vargham (2609)
Prof Creative Commons License 2016.12.20 0 0 2611

Ha az stabil 5V, igen.

Előzmény: Brandyman (2610)
Brandyman Creative Commons License 2016.12.20 0 0 2610

Sziasztok, 

 

Lehetséges elllátni táppal az Arduino-t a tüskesor +5V pinen keresztül? 

(pld shield-ről) 

 

Köszi! 

Vargham Creative Commons License 2016.12.20 0 0 2609

Mintha az Arduino korai verzióiban nem lett volna boolean... (A bool az természetesen más.)

A C nyelvben pedig 0 a hamis, és minden más igaz. :-)

 

Érdekes gondolatok a témában:

http://cybergibbons.com/arduino/arduino-misconceptions-7-boolean-variables-are-a-native-cavr-type/

http://forum.arduino.cc/index.php?topic=139382.0

Előzmény: Prof (2608)
Prof Creative Commons License 2016.12.20 0 0 2608

Jó reggelt!

Ilyenkor, hogy is mondjam, akadok ki kissé, hogy milyen végtelenül következetlen az Arduino keretrendszer. És ilyenkor nem tudom eldönteni, hogy ez most bug vagy feature!?

És persze, nem nehéz átlátni a különböző változótípusok közötti átjárhatóságot, csak egy nulla szintű kezdő számára nem biztos, hogy helyes iránymutatás az, hogy "olvass és értelmezz valamit bináris módon, amit egy 16 bites decimálisan értelmezett térben tárolsz".
A leírást köszönöm mindenesetre!

Előzmény: Vargham (2606)
Tomiali Creative Commons License 2016.12.19 0 0 2607

Sziasztok.

 

Mitől lehet az, hogy mérek egy lm35-el 3-4 mérés jó az 5-ik mérés feljebb van 3 fokkal majd a következő megint  jó?

Kb 2 méter vezeték végén van az lm35. Próbáltam több kondival is de semmi nem változik. Percenként mérek.

Vargham Creative Commons License 2016.12.17 0 0 2606

> Alapvetően a fő kérdés az, hogy a buttonState miért int és miért nem bool?

https://github.com/arduino/Arduino/blob/master/hardware/arduino/avr/cores/arduino/Arduino.h

135. sor:

int digitalRead(uint8_t);

Valamint ez a hivatalos ajánlás is:

https://www.arduino.cc/en/Reference/DigitalRead

Előzmény: Prof (2605)
Prof Creative Commons License 2016.12.17 0 0 2605

Hali!

 

Alapvetően a fő kérdés az, hogy a buttonState miért int és miért nem bool?

 

A debugnak ez a szintje a circuits.io-n nálam már kiakaszt mindent. A rendes szimulációnál is kihullik a hajam néha, de ha belehasítanék egy ilyenbe, akkor megállna, mint a bot.

 

Üdv!

Előzmény: Vargham (2603)
djz Creative Commons License 2016.12.17 0 0 2604

Hát pont ilyen ötletekre vadászok, mint ez a világítós.

Az a baj, hogy ezt egy közepesnél kevésbé szarabb rosszabb lépcsőházi automata tudja, ha van benne szervízüzemmód. És nem vagyok benne biztos, hogy drágább, mint az Arduinós megoldás bedobozolva, relével, stb.

A millis() overflow megoldást viszont tanulmányozom, köszi.

Vargham Creative Commons License 2016.12.17 0 0 2603

> U.i.: linket "új ablakban nyílik" kapcsolóval léééégysziiiii!

Úgy szoktam. Most valamiért kimaradt.

 

> Ezt miért?

> int buttonState = LOW;

Mit miért? Miért van ez a változó, miért inicializálom LOW-ra, vagy miért pozitív logikájú a gomb?

 

> Szimulátor helyett inkább eszközt.

Mindkettőnek megvan a maga előnye.

 

> A szimulátornak három hatalmas baja van:

> egyrészt roppant rendszerigényes (szerver és kliens oldalon is),

Ez tény.

 

> másrészt nem real time, hanem lassúcska,

Ez is.

 

> harmadrészt nincs debug lehetőség egyáltalán.

Az általam linkeltben van. :-) Serial print is megy, lehet tenni breakpoint-ot, léptetni soronként, és nézni a változók értékét.

 

circuits debugger

Előzmény: Prof (2599)
Nooorbi91 Creative Commons License 2016.12.17 0 0 2602

Igen, igazatok van. Valóban rosszul tettem fel a kérdést. 
Mentségemre szolgáljon hogy hulla fáradt voltam és még csak nem is értek hozzá :D
Köszönöm mindenkinek a segítségeket. Próbálom memorizálni őket és ha legközelebb bármi bajom van akkor használni.
Vargham, a te verziódat raktam össze(bár egyenlőre még csak próbapanelen). Tökéletesen működik, köszönöm!

A lámpa időzítős funkció közbeni lekapcsolására nincs szükség.  Ez egy kinti lámpa lesz, ha valaki kimegy akkor megnyomja a gombot, a lámpa meg majd lekapcsol. Így működik a régi is. De ha valamit kell csinálni kint ami időigényesebb akkor bajos mindig nyomkodni a gombot, ezzel ez ki lesz küszöbölve.

Még egyszer köszönöm a segítséget mindenkinek! 

 

Prof Creative Commons License 2016.12.17 0 0 2601
Előzmény: Vargham (2597)
Prof Creative Commons License 2016.12.17 0 0 2600

Szimulátor helyett inkább eszközt.

A szimulátornak három hatalmas baja van: egyrészt roppant rendszerigényes (szerver és kliens oldalon is), másrészt nem real time, hanem lassúcska, harmadrészt nincs debug lehetőség egyáltalán.

Előzmény: Vargham (2596)
Prof Creative Commons License 2016.12.17 0 0 2599

Elegáns, teljesen más koncepció.

 

Ezt miért?

int buttonState = LOW;

 

U.i.: linket "új ablakban nyílik" kapcsolóval léééégysziiiii!

Előzmény: Vargham (2597)
Prof Creative Commons License 2016.12.17 0 0 2598

Feltöltve találtam benne több hibát is, ezek egy része elég amatőr (hozzárendelés == sima = helyett). A maradékot még jó 20 percig debugoltam Serial Monitorral. Az if-ek egymásután és a bool-ok állítgatása kihozott olyan korrelációkat, amelyekből a bool-ok olyan kombinációja jött ki, amit nem vizsgáltam, emiatt végtelen ciklusba került. Az ok az egyszerűsítés: "ha B feltételt vizsgálom, tudom, hogy A feltétel mindenképp igaz, tehát akár ki is hagyhatom a vizsgálatból". No, ez marhára nem lett igaz, mert lett olyan eset, hogy B feltétel igaz volt ugyan, de az A feltétel egy korábbi vizsgálat eredménye képpen már nem teljesült. Már majdnem beleírtam egy újabb bool-t, de rájöttem. :-D
Egyébként tényleg jó feladat.

 

Előzmény: Prof (2595)
Vargham Creative Commons License 2016.12.17 0 0 2597

Közben én is megírtam. :-) A millis overflow figyelést kihagytam. És minden pozitív logikájú, hogy ne kavarjam meg a kérdezőt.

 

Itt van a kód:

https://gist.github.com/vargham/772c6b116f4aec4f0792dd573ee00137

 

És a szimuláció:

https://circuits.io/circuits/3546758-auto-off-lamp

Előzmény: Prof (2595)
Vargham Creative Commons License 2016.12.17 0 0 2596

Tanácsok és észrevételek:

 

  • Legyen a változók neve angolul. Ez a mix (Lampa, val) nem szerencsés.
  • val és val2 nem beszédes név. Kis idő múlva te magad sem fogod tudni, hogy mire vannak.
  • delay-t felejtsd el! Maga az ördög. :-)
  • Használj kód megosztót, mert így olvashatatlan.
  • Használj szimulátort, hamar kiderülnek a problémák.
Előzmény: Nooorbi91 (2590)
Prof Creative Commons License 2016.12.17 0 0 2595

Igen.

Én időközben megírtam, most ellenőrzöm. millis() overflow figyeléssel. Egyedül watchdog nincs benne. Meg delay() egy szál se. Dezájnolva 99 sor és csak két mágikus szám van benne. 3 define (pinek), 5 boolean, 5 unsigned long, mind globális, bár csak egy függvény (void loop() ) van.

És asszem életemben először az ellenőrzött 'kész' program compile error nélkül futott le.
#jonapomvan

Előzmény: Vargham (2594)
Vargham Creative Commons License 2016.12.17 0 0 2594

> Szerintem nagyjából az, hogy miért nem működik.

Szerintem is.

:-)

De én kíváncsi lettem volna, hogy az eredeti kérdező hogyan fogalmazza meg a kérdést. Már csak azért is, mert rengeteget segít, ahogyan precízen megkonstruálja a kérdést.

Szóval a nem működik, mi a baja az nem kérdés.

Az a tapasztalatom, hogy egy precízen feltett kérdésre sokkal többen és sokkal pontosabban válaszolnak. Az szintén tapasztalat, hogy egy kérdés precíz megfogalmazása közben 10-ből 9 alkalommal meg is válaszolom magamnak, és nem kell fórumokon kérdezősködni. Egyszerűen a probléma logikus végig gondolása segít.

Előzmény: Prof (2592)
Prof Creative Commons License 2016.12.17 0 0 2593

Szia!

Tényleg jó feladat. A mellékelt kód viszont nagyon nem egészen ezt csinálja.

Sorban a gondok:
1. LED nincs kimenetként deklarálva.
2. A nyomógombot érdemes aktív LOW-két használni: pinMode(kapcsolo, INPUT); aztán digitalWrite(kapcsolo, HIGH); Ez a belső pull-up ellenállást bekapcsolja, így a bemenet folyamatosan (kis áramon) magas jelszinten lesz. Ha lemegy 0-ra (ilyenkor a kapcsoló másik felét a földre kell kötni), akkor van gombnyomás. Üzembiztosabb és kevésbé zajérzékeny.
3. Változók. Ez így nem jó. Forrás olvasásra. Itt: data types. A lényeg, hogy bár most még annyira nagy galibát nem okoz, komplexebb programok simán elhasalhatnak rajta, hogy nem következetesen vannak használva a különböző változótípusok. Az int numerikus változó, ennek nincs TRUE és FALSE vagy HIGH és LOW értéke, bár az igaz, hogy az IDE vizsgálatoknál értékelheti úgy, mintha lenne, de a hozzárendelés ebben a formában gondokat okozhat.
4. 20 mp-es delay nagyon nem szerencsés. Mi van, ha ez idő alatt le akarod kapcsolni a lámpát? (Megoldás a blink without delay példában az Arduino tudástárban [lásd fent].)
5. Az első vizsgálatban látható 1 és 4 mp-es kivárások közül az 1 mp-esnek van értelme (bár te 2 mp-et írtál), a 4 mp-nek viszont semmi.
6. Semmi nem vizsgálja a második (bekapcsolt állapotban lévő lámpa kikapcsolására adott utasítást).

Kb. ennyi így első blikkre.

Előzmény: Nooorbi91 (2590)

Ha kedveled azért, ha nem azért nyomj egy lájkot a Fórumért!