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   404 / 853
(#) morgo válasza berkesandor hozzászólására (») Dec 6, 2017 /
 
Az "lcd.println" helyett nem csak lcd.print kéne?
A hozzászólás módosítva: Dec 6, 2017
(#) berkesandor válasza morgo hozzászólására (») Dec 6, 2017 /
 

Köszönöm, ennyi volt a megfejtés.
(#) jointsilver36 válasza tbarath hozzászólására (») Dec 7, 2017 /
 
Szia! Próbáltam,de igysem működik ,feltölti az eszközre de az ...Írok hibaüzenetet ha hazaérek.
(#) RoliNyh válasza tbarath hozzászólására (») Dec 7, 2017 /
 
Nos sajna úgy sem megy, a hiba ugyan az.
Idézet:

Arduino: 1.8.3 (Windows 7), Alaplap:"Arduino/Genuino Uno"

eBikeBatteryChargerDisplay:26: error: 'uTFT_ST7735' does not name a type

uTFT_ST7735 tft = uTFT_ST7735(__CS, __DC, __RST); // Kijelző inicializálása.

^

D:\_Arduino_1.8.3_\Projekt\eBikeBatteryChargerDisplay\eBikeBatteryChargerDisplay.ino: In function 'void setup()':

eBikeBatteryChargerDisplay:35: error: 'tft' was not declared in this scope

tft.begin(); // Képernyő bekapcsolása.

^

D:\_Arduino_1.8.3_\Projekt\eBikeBatteryChargerDisplay\eBikeBatteryChargerDisplay.ino: In function 'void loop()':

eBikeBatteryChargerDisplay:64: error: 'tft' was not declared in this scope

tft.fillScreen(BLACK); // Háttérszín beállítása feketére.

^

exit status 1
'uTFT_ST7735' does not name a type

Ennek a jelentésnek több információja lehetne
a "Bővebb kimenet mutatása fordításkor"
opció engedélyezésével a Fájl -> Beállítások-ban.



Ha beteszem elé az "u" betűt, rögtön ki is feketíti a szöveget, nem marad narancssárga...

(Nem tudom említettem -e már, erről a libről van szó.: uTFT-ST7735)
A hozzászólás módosítva: Dec 7, 2017
(#) csatti2 válasza RoliNyh hozzászólására (») Dec 7, 2017 /
 
Az include részben próbáld meg relációs jelek helyett idézőjelek közé tenni a TFT könyvtár nevét. A <vmi.h> a rendszerkönyvtárak számára van fenntartva, "vmi.h" pedig a sajátokéra.
(#) RoliNyh válasza csatti2 hozzászólására (») Dec 7, 2017 /
 
Úgy akkor az #include -nál kékkel írja ki, de a hiba viszont ugyanaz.:
Idézet:

eBikeBatteryChargerDisplay:26: error: 'uTFT_ST7735' does not name a type...
A hozzászólás módosítva: Dec 7, 2017
(#) csatti2 válasza RoliNyh hozzászólására (») Dec 7, 2017 /
 
Vmiért nem találja az IDE a könyvtáradat.
(#) szeg76 válasza RoliNyh hozzászólására (») Dec 7, 2017 / 2
 
Ahogy én látom, a "megszokottól" eltérően ebben az esetben a mindenféle függvények nincsenek osztályba szervezve, nem tudsz létrehozni egy objektumpéldányt.
Ezek különálló, oldschool C stílusú függvények egy C programban.
Nézd meg az example.c példát, világos lesz.
A hozzászólás módosítva: Dec 7, 2017
(#) RoliNyh válasza csatti2 hozzászólására (») Dec 7, 2017 /
 
Pedig elvileg ott van a helyén minden...
(#) csatti2 válasza RoliNyh hozzászólására (») Dec 7, 2017 / 1
 
Ha erről a könyvtárról van szó, akkor szeg76-nak igaza van és rosszul használod.
Belenéztem és itt nincsenek osztályok, azaz nincs mit példányosítani sem.
A hozzászólás módosítva: Dec 7, 2017
(#) RoliNyh válasza csatti2 hozzászólására (») Dec 7, 2017 /
 
Hmmm, ok, akkor én itt kifújtam úgy érzem. Eddig tartott az én "tudásom".
Maradok az eredeti libnél, még ha sokat foglal is.
Bár próbáltam keresni valami érthető doksit, hogy is lehetne dekrementálni, nem találtam...
A hozzászólás módosítva: Dec 7, 2017
(#) csatti2 válasza RoliNyh hozzászólására (») Dec 7, 2017 /
 
Hát, pedig eléggé szög egyszerűnek tűnik ez a lib. Nézd meg a példát.
(#) RoliNyh válasza csatti2 hozzászólására (») Dec 7, 2017 /
 
Megnéztem, de hiába látom, úgysem értem.
Hasonlattal élve, ha valaki nem tudja az ABC -t (pl egy óvodás),
hiába látja a betűket, leírni nem tudja, maximum lerajzolni...
(Gondolom érthető a kettő közti különbség.
Soha nem tanultam programozni, csak mondjuk a Ctrl+C, Ctrl+V kombinációt jól ismerem.)
(#) ztsoft hozzászólása Dec 9, 2017 /
 
Sziasztok!

Egy fogyasztásmérőn dolgozok (ACS712-20A-M, ellenállás osztó), ez egy NAS-ban lenne, Serial monitoron. Az lenne a kérdésem, hogy az ellenállás osztónak mennyi legyen az eredő ellenállása, olvastam már 10k-ról, de volt 100k nagyságrend is? A külső táp 12V, 10A-es, de a biztonság kedvéért én inkább 15V-ra tenném a maximumot. Még egy, érdemes külső referencia feszültséget használni, vagy elég ha időnként mérem a tápfeszt, Bővebben: Link?
(#) csatti2 válasza ztsoft hozzászólására (») Dec 9, 2017 /
 
Attól függ milyen pontosan akarod mérni, illetve mennyire félted az áramkörödet. Ha megmondod milyen követelményeket vársz el, akkor teszek javaslatot. Igazság szerint unom már beírni a rendes megoldásokat, hogy aztán vki mindig a legprimitívebb felé menjen el, mert az az egyszerű...
(#) ztsoft válasza csatti2 hozzászólására (») Dec 9, 2017 /
 
Köszönöm a válaszod!

A pontosság annyira nem gond, úgyis csak tájékoztató jellegű lesz, esetleg egy külső fogyasztásmérővel lehet ellenőrizni (persze itt már a táp vesztesége is benne lesz). A védelemről úgy gondoltam, hogy egy nagyobb teljesítményű, 5.1V-os zéner diódát teszek az osztó után (mivel eleve 15V a max, így szerintem szól bele a mérésbe, vagy nem jól gondolom?). Habár jobban bele gondolva, ha a táp elszáll, akkor úgyis viszi magával az áramkört is, mivel USB-ről megy (a táp Chieftec CDP-120ITX).

Mondjuk kód szempontjából jobb választás lenne a külső referencia használata, mivel még más feladatok is lenének (hőmérséklet mérés, ventilátor vezérlés, kommunikáció az oprendszerrel).

Nem akarok nagyon primitívet építeni, de pénz temetőt sem, van már egy projektem, ami már közel egy éve hiba nélkül üzemel (hűtőgép vezérlő).
(#) csatti2 válasza ztsoft hozzászólására (») Dec 9, 2017 / 1
 
Zener diódát nem használhatsz analóg bemenet védésre, mert nem egyenletes a karakterisztikája és így belehamisít a mérésbe (szivárgó áram + ellenállás, ráadásul negatív fesz ellen sem véd [külső hatások], illetve lassú is és túl magas feszen fog kis áramnál [küszöbfesz karakterisztika]). Szerencsésebb két schottky diódával védeni (az eredő ne legyen túl nagy, mert a schottky-knak is van szivárgó árama, 10-50k belefér). A mellékelt képen látható egy bemenetvédelem leválasztó pufferrel. A ellenállásosztó egyik ellenállása itt maga az erőszenzor, a PESD3V3S2UT diódák ESD védelemre vannak (a szenzort tapizom), a rossz fesszintek ellen pedig a BAT54S dupladióda véd. Az R14 neked nem kell (itt ugye hiányozhat a másik ellenállás és vmin esnie kell a fesznek ha behúz a dióda), a műveleti erősítő bemenete neked az analóg bemenet.

Külső referencia akkor kell, ha a betápod feszültsége nem eléggé stabil/pontos, illetve hőmérsékletfüggő (pl. USB táp, LM7805 és társai). Egy olcsó TL431 megteszi ilyenkor.
A hozzászólás módosítva: Dec 9, 2017
(#) tbarath válasza ztsoft hozzászólására (») Dec 9, 2017 / 1
 
Én nem használnám ezt az ACS-t. Szerintem árammérésre köss sorba egy kis söntöt a GND és a táplált eszköz földpontja között, pl. néhányszor 0,1 Ohm párhuzamosan. Ha ötöt kötsz párhuzamosan, akkor a 0,02 Ohm eredő ellenálláson 10 A esetén esik 0,2 Volt, ennek nem kellene befolyásolni a táplált eszköz stabilitását. Ha ezt egy opamp-pal 5x-ösre erősíted, akkor lesz egy 0-1V feszültséget, ami a belső 1,1V referenciához vizsgálva pont jó.
Feszültségnél szintén, az ellenállásosztó ellenállása csak a meddő fogyasztását (és melegedését) befolyásolja, egy 150k-10k osztóval tizenhatodára csökkented 12V-ot, ez szintén jól vizsgálható az 1,1V referenciához képest.
Az 1v1 referencia kalibrálásához használhatsz egy TL431 + soros ellenállás +feszültségosztó áramkört, a kb. 2,45V referenciát leosztod a harmadára és megméred az ADC-vel.
(#) ztsoft válasza csatti2 hozzászólására (») Dec 9, 2017 /
 
Értem, akkor a zéner helyett schottky lesz. Több helyen olvastam, hogy a bemeneti opát nem javasolják a plusz számítások, hibák miatt (Arduino-s feszültség mérésnél jobbnak tartják a sima ellenállás osztót). Az eredőt meg 25k-ra méretezem (arany középút).

Nem tudom, hogy kell-e nekem ESD védelem, mivel az alaplap eleve védett a gyártó szerint (Bővebben: Link), az egész áramkör a PC belsejében lesz (nem lesz tapizva), a külvilág felé csak a táp (12V) és az UTP kábel megy. Maga a ház test potenciálon lesz, a földelés az táp függő (nem ismerem a felépítését).

Igen, a betáp nem stabil (mint ahogy a PC-ben szokás), USB-ről menne (már csak a kommunikáció miatt is kézenfekvő), így akkor lesz külső referencia feszültség.
A hozzászólás módosítva: Dec 9, 2017
(#) csatti2 válasza ztsoft hozzászólására (») Dec 9, 2017 /
 
Egy átlagos műveleti erősítő ofszetfeszültsége 1-2mV. Ha ez gondot jelent akkor már úgy is kalibrálni kell az eszközt (az ellenállásosztó sem annyira pontos, ugye). Egy olcsó LM358 (LM324) például nagyon komoly bemenetvédelemre képes, sokan nem veszik észre az adatlapjukon, hogy van egy különleges képességük, mégpedig a max. 32V-os bemeneti feszültség a tápfesztől függetlenül! Ez egy ritka tulajdonság a műveleti erősítők között és a filléres árukat is figyelembe véve remek bemeneti védőpufferré teszi őket.

Az ESD védelem neked sztem sem kell, csak épp ilyen mintát másoltam be a KiCAD projektemből.

Amit tbarath írt, használható megoldás bár miután fogyasztásmérés a feladat így gondolom normálisabb pontosságot vársz el a projekttől. Az általa vázolt esetben nagyon pontos alkatrészválasztásra van szükség a jó eredményhez, ezért én inkább egy cél IC-t használnék erre a feladatra (pl. INA sorozat darabjai a Texas Instrumentstől, vannak beépített erősítésű analóg [pl. x250-es], illetve buszos [pl. I2C] verziók is). Söntellenállásnak pedig egy konstantán ellenállást (mondjuk pár mOhm körül, az INA-k sokkal nagyobb erősítésre képesek) a nagy áram miatt (minek pocsékoljuk az energiát ugye).
A hozzászólás módosítva: Dec 9, 2017
(#) krauszkrisztian hozzászólása Dec 9, 2017 /
 
üdv!
Építettem egy Arduinos kocsit.
  1. #define I1 8  
  2. #define I2 9  
  3. #define I3 12  
  4. #define I4 13
  5.  
  6. #define E1 10  
  7. #define E2 11  
  8.  
  9. void setup() {
  10.  
  11.     pinMode(E1, OUTPUT);
  12.     pinMode(E2, OUTPUT);
  13.  
  14.     pinMode(I1, OUTPUT);
  15.     pinMode(I2, OUTPUT);
  16.     pinMode(I3, OUTPUT);
  17.     pinMode(I4, OUTPUT);
  18.  
  19.     pinMode(7, OUTPUT);
  20.     pinMode(6, OUTPUT);
  21.    
  22.     digitalWrite(E1, HIGH);
  23.     digitalWrite(E2, HIGH);
  24.    
  25.  Serial.begin(9600);
  26.  }
  27.  
  28. void loop() {
  29.  if(Serial.available()>0)
  30.    {    
  31.       char data= Serial.read();
  32.       switch(data)
  33.       {
  34.         case 'A': digitalWrite(I1, LOW);
  35.                   digitalWrite(I2, HIGH);
  36.                   digitalWrite(I3, LOW);
  37.                   digitalWrite(I4, HIGH);
  38.                   Serial.println("Előre!");break;  
  39.                  
  40.         case 'B': digitalWrite(I1, LOW);
  41.                   digitalWrite(I2, LOW);
  42.                   digitalWrite(I3, LOW);
  43.                   digitalWrite(I4, LOW);
  44.                   Serial.println("Állj!");break;
  45.                  
  46.         case 'C': digitalWrite(I1, HIGH);
  47.                   digitalWrite(I2, LOW);
  48.                   digitalWrite(I3, HIGH);
  49.                   digitalWrite(I4, LOW);
  50.                   Serial.println("Hátra!");break;  
  51.                  
  52.         case 'D': digitalWrite(I1, LOW);
  53.                   digitalWrite(I2, LOW);
  54.                   digitalWrite(I3, LOW);
  55.                   digitalWrite(I4, LOW);
  56.                   Serial.println("Állj!");break;
  57.                  
  58.         case 'E': digitalWrite(I1, LOW);
  59.                   digitalWrite(I1, HIGH);
  60.                   digitalWrite(I3, LOW);
  61.                   digitalWrite(I4, HIGH);
  62.                   Serial.println("Balra!");break;
  63.                  
  64.         case 'F': digitalWrite(I1, LOW);
  65.                   digitalWrite(I2, LOW);
  66.                   digitalWrite(I3, LOW);
  67.                   digitalWrite(I4, LOW);
  68.                    Serial.println("Állj!");break;
  69.                  
  70.         case 'G': digitalWrite(I1, LOW);
  71.                   digitalWrite(I2, HIGH);
  72.                   digitalWrite(I3, HIGH);
  73.                   digitalWrite(I4, LOW);
  74.                   Serial.println("Jobbra!");break;
  75.                  
  76.         case 'H': digitalWrite(I1, LOW);
  77.                   digitalWrite(I2, LOW);
  78.                   digitalWrite(I3, LOW);
  79.                   digitalWrite(I4, LOW);
  80.                   Serial.println("Állj!");break;
  81.                  
  82.                  
  83.         case 'I':  digitalWrite(6, HIGH);
  84.                    Serial.println("Duda be!");break;
  85.          
  86.         case 'J':  digitalWrite(6, LOW);
  87.                    Serial.println("Duda ki!");break;
  88.        
  89.         case 'K':  digitalWrite(7, HIGH);
  90.                    Serial.println("Lámpa be!");break;
  91.        
  92.         case 'L':  digitalWrite(7, LOW);
  93.                    Serial.println("Lámpa ki!");break;
  94.        
  95.         default : break;
  96.       }        
  97.    }
  98.    delay(1);
  99. }


Írtam hozzá alkalmazást telefonra, és megy is vele.
Egy bizonyos elküldött jel után nem érzékeli az elküldött jelet. Szóval: ha előre megy, és elengedem a gombot, akkor addig megy előre, amíg nem Resetelem a programot.
Legyen szíves valaki segíteni a hiba kiküszöbölésében!
(#) ztsoft hozzászólása Dec 9, 2017 /
 
Köszönöm a válaszokat!

Akkor marad a következő felállás a fesz mérésre, ellenállás osztó (0.1%), 2 schottky dióda, LM358. A referencia fesz is lesz (úgyis kell az áramerősség méréshez is), MCP 1541 személyében.

Az INA egyelőre nem lesz, már meg van rendelve az ACS, de ha nem válna be, akkor a következő mindenképpen INA lesz.
(#) tbarath válasza krauszkrisztian hozzászólására (») Dec 9, 2017 / 1
 
Nincs lekezelve az az eset, amikor nem kap jelet.
(#) csatti2 válasza ztsoft hozzászólására (») Dec 9, 2017 /
 
1%-os ellenállás bőven elég lesz. Műszerrel majd után méred és korrigálod programból. Az LM358 nem rail-to-rail kimenetű (ezért ha használod, akkor inkább egy 2,5V-os referenciát használj, mert akkor nem probléma, hogy csak kb. 3,5V-ra megy fel a kimenet 5V táp esetén), a schottky-k elegek lesznek védelemnek.
(#) krauszkrisztian válasza tbarath hozzászólására (») Dec 9, 2017 /
 
Azt hogyan lehet?
(#) tbarath válasza krauszkrisztian hozzászólására (») Dec 9, 2017 / 1
 
Két lehetőség van, nem tudom melyik igaz az esetedre:
1. ha ilyenkor nem jön karakter, akkor az if(Serial.available()>0){} után kellene egy else ág, és oda tenni amit kell
2. ha ilyenkor is jön valamilyen karakter (csak nem azok, amiket már lekezelsz, hanem pl. egy space, vagy ilyesmi), akkor a switch{} default ágábe kellene tenni amit ilyenkor kellene csinálnia
A hozzászólás módosítva: Dec 9, 2017
(#) krauszkrisztian válasza tbarath hozzászólására (») Dec 9, 2017 /
 
Tudná módosítani ez alapján a kódot?
(#) tbarath válasza krauszkrisztian hozzászólására (») Dec 9, 2017 / 1
 
Mármint mi alapján?
Annyit tudok, amit ide beírtál. Hogy arduino-s kocsi, és látom a kódot, amiben 4 digitális kimenet fel-le kapcsolgatásával vezérled, a 4 low az az állj. Már ha jól értem.

Írtam valamit, de egyáltalán nem biztos, hogy azt csinálja, amit szeretnél.
Ha nem kap jelet, akkor megáll.
Ha kap jelet, de az nem A, C, E, G, I, J, K, vagy L, akkor megáll.
A delay-t megnöveltem 10 millisec-re, remélhetőleg ennyi idő alatt jön input, ha tolod neki folyamatosan. Ha nem, akkor még ez is növelhető, 50-100 msec delay szerintem belefér.

  1. #define I1 8
  2. #define I2 9
  3. #define I3 12
  4. #define I4 13
  5. #define E1 10
  6. #define E2 11
  7.  
  8. char data;
  9.  
  10. void setup() {
  11.         pinMode(E1, OUTPUT);
  12.         pinMode(E2, OUTPUT);
  13.         pinMode(I1, OUTPUT);
  14.         pinMode(I2, OUTPUT);
  15.         pinMode(I3, OUTPUT);
  16.         pinMode(I4, OUTPUT);
  17.         pinMode(7, OUTPUT);
  18.         pinMode(6, OUTPUT);
  19.         digitalWrite(E1, HIGH);
  20.         digitalWrite(E2, HIGH);
  21.         Serial.begin(9600);
  22. }
  23.  
  24. void loop(){
  25.         if (Serial.available()>0){
  26.                 while (Serial.available()>0){
  27.                         data = Serial.read();}
  28.                 switch(data){
  29.                         case 'A': digitalWrite(I1, LOW);
  30.                                           digitalWrite(I2, HIGH);
  31.                                           digitalWrite(I3, LOW);
  32.                                           digitalWrite(I4, HIGH);
  33.                                           Serial.println("Előre!");break;
  34.                                        
  35.                         case 'C': digitalWrite(I1, HIGH);
  36.                                           digitalWrite(I2, LOW);
  37.                                           digitalWrite(I3, HIGH);
  38.                                           digitalWrite(I4, LOW);
  39.                                           Serial.println("Hátra!");break;
  40.                                        
  41.                         case 'E': digitalWrite(I1, LOW);
  42.                                           digitalWrite(I1, HIGH);
  43.                                           digitalWrite(I3, LOW);
  44.                                           digitalWrite(I4, HIGH);
  45.                                           Serial.println("Balra!");break;
  46.                                        
  47.                         case 'G': digitalWrite(I1, LOW);
  48.                                           digitalWrite(I2, HIGH);
  49.                                           digitalWrite(I3, HIGH);
  50.                                           digitalWrite(I4, LOW);
  51.                                           Serial.println("Jobbra!");break;
  52.                                        
  53.                         case 'I':  digitalWrite(6, HIGH);
  54.                                            Serial.println("Duda be!");break;
  55.                        
  56.                         case 'J':  digitalWrite(6, LOW);
  57.                                            Serial.println("Duda ki!");break;
  58.  
  59.                         case 'K':  digitalWrite(7, HIGH);
  60.                                            Serial.println("Lámpa be!");break;
  61.  
  62.                         case 'L':  digitalWrite(7, LOW);
  63.                                            Serial.println("Lámpa ki!");break;
  64.  
  65.                         default : digitalWrite(I1, LOW);
  66.                                           digitalWrite(I2, LOW);
  67.                                           digitalWrite(I3, LOW);
  68.                                           digitalWrite(I4, LOW);
  69.                                           Serial.println("Állj! (B, D, F, H vagy egyéb input)");break;
  70.                 }
  71.         }
  72.         else{
  73.                 digitalWrite(I1, LOW);
  74.                 digitalWrite(I2, LOW);
  75.                 digitalWrite(I3, LOW);
  76.                 digitalWrite(I4, LOW);
  77.                 Serial.println("Állj! (nincs input)");
  78.         }
  79.         delay(10);
  80. }
(#) berkesandor hozzászólása Dec 10, 2017 /
 
Szeretnék csinálni egy 5 elemű tömböt, azt feltölteni float változókkal. (ez eddig nem gond)
A legnagyobb és legkisebb érték kivételével, szeretnék átlagolni (a maradék 3 elemet).
Tudnátok benne segíteni?
(#) tbarath válasza berkesandor hozzászólására (») Dec 10, 2017 /
 
1. felveszel 2 változót, legyen a nevük min és max.
2. min és max értéke is a tömb első eleme legyen
3. ciklusban végigmész a tömb maradék elemein (2-5), ha az adott elem kisebb mint a min, akkor min értékét erre állítod. Ha az adott elem nagyobb, mint a max, akkor a max értékét erre állítod.
4. felveszel 2 változót, darab és osszeg, mindkettő értéke nulla
5. ciklusban végigmész a tömb összes elemén (1-5), ha az adott elem nem a max és nem a min, akkor az elemet hozzáadod az osszeg-hez, és a darab értékét eggyel növeled
6. elosztod az osszeg értékét a darab értékével, így kapsz átlagot - persze csak ha a darab > 0, mert ha nem, akkor egyetlen vagy 2 különböző értéket tartalmaz az összes tömbelemed.
A hozzászólás módosítva: Dec 10, 2017
Következő: »»   404 / 853
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