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   8 / 849
(#) johny999 hozzászólása Jún 9, 2013 /
 
Sziasztok,

valaki tudna segíteni, hogyan tudnék 50Hz-es négyszögjelet generálni 50%-os kitöltési tényezővel?

Előre is köszi.
(#) johny999 válasza johny999 hozzászólására (») Jún 9, 2013 /
 
Vagy használhatom a tone() funkciót erre a célra? Egy tranzisztort szeretnék vele kapcsolgatni.
(#) ColT válasza johny999 hozzászólására (») Jún 10, 2013 /
 
Hát mondjuk a Bink program is ezt csinálja, átírod a delayeket, és csókolom Már persze ha az neked megfelelő freki.

De gondolom a Tone is jó erre.
A PWM kimenetek is megfelelnek.
(#) TavIR-AVR válasza ColT hozzászólására (») Jún 10, 2013 /
 
Milyen nyelven kellene? Arduino, Bascom? C? ASM?
Milyen pontos 50 Hz? (kvarcpontos, belső RC tag pontos?)
Hálózati matatásra kellene? (ekkor szinkronizálni kell a hálózattal, mert az kicsit ingadozik 50 Hz +/- 0,02 Hz-vel... Néhány nap alatt szétcsúszik a kvarcpontos is....
(#) johny999 válasza TavIR-AVR hozzászólására (») Jún 10, 2013 /
 
Egy Tiny45/85-t akarok beprogramozni Arduino nyelven (esetleg WinAVR-el), hogy kapcsolgasson egy tranzisztort változó frekvenciával 20-60kHz között 50% kitöltési tényezővel . A belső oszcillátort használnám, nem kell hajszálpontos freki.
Most olvastam hogy a tiny nem támogatja a tone()-t úgyhogy más megoldás kéne.
A hozzászólás módosítva: Jún 10, 2013
(#) TavIR-AVR válasza johny999 hozzászólására (») Jún 10, 2013 /
 
Tiny45/85 az Arduino alatt felejtős.
Arduino: Mega8/168/328/1280/2560 és Mega32U4 amiket támogat. A többi megoldás csak "barkács" illetve rendszerhack.

20-60 Hz vagy kHz?
Nagyon nem mindegy!
(#) johny999 válasza TavIR-AVR hozzászólására (») Jún 10, 2013 /
 
Akkor WinAVR, és 20000-60000Hz.

PB1-es (6) pinen van a FET, a PB0-n (5) meg egy led ami jelzi hogy működik az áramkör.
A hozzászólás módosítva: Jún 10, 2013
(#) naren93 hozzászólása Jún 14, 2013 /
 
Hello,

A segítségetekre lenne szükségem, azt a feladatot kaptam hogy állítsak össze egy (home made) 32x32-es monokróm LED mátrixot, ami egy Arduino Uno-val lenne vezérelve. A neten keresgélve több helyen 74HC595-ös léptető regisztert ajánlanak. Csak az a baj hogy teljesen amatőr vagyok ebben a témában így fogalmam sincs hogy mennyi léptető regiszterre lenne szükségem és hogy hogyan kössem be őket.

Válaszokat előre is köszönöm!
(#) melorin hozzászólása Jún 17, 2013 /
 
Üdv újra!
Egy kijelzőt szeretnék shift regiszterrel működésre bírni úgy, hogy a hőmérsékletet mutassa.
3db 74HC595 IC van hozzá.
A tavir-os leckékben volt egy számláló vagy mi, ami végigment 0-9 aztán betüket írt ki, az működik is.
De nem tért ki a lecke a további felhasználhatóságra.
Kutattam a neten, és találtam egy programot erre a célra, de össze-vissza karaktereket írkál ki a hőmérséklet helyett, ráadásul folyamatosan változik a katyvasz amit kiír, pedig a hőmérséklet szinte állandó, max a tized/század fok változik.
Ránéznétek, hogy mi lehet a baj?
  1. #include <OneWire.h>
  2. #include <DallasTemperature.h>
  3. #define ONE_WIRE_BUS 22 // Hőmérő a pin22-n
  4. OneWire oneWire(ONE_WIRE_BUS);
  5. DallasTemperature sensors(&oneWire);
  6. const int digitPins[4] = {
  7.   4,5,6,7};                 //4 common anode pins of the display
  8. const int clockPin = 11;    //74HC595 Pin 11
  9. const int latchPin = 12;    //74HC595 Pin 12
  10. const int dataPin = 13;     //74HC595 Pin 14
  11. const int tempPin = 22;     //temperature sensor pin
  12. const byte digit[10] =      //seven segment digits in bits
  13. {
  14.  B01111110, B00110000, B01101101, B01111001,
  15.  B00110011, B01011011, B01011111, B01110000,
  16.  B01111111,  B01111011,
  17. };
  18. int digitBuffer[4] = {
  19.   0};
  20. int digitScan = 0, flag=0,  soft_scaler = 0;
  21.  
  22. float tempC;
  23.  
  24. void setup(){                
  25.   for(int i=0;i<4;i++)
  26.   {
  27.     pinMode(digitPins[i],OUTPUT);
  28.   }
  29.   pinMode(tempPin, INPUT);
  30.   pinMode(latchPin, OUTPUT);
  31.   pinMode(clockPin, OUTPUT);
  32.   pinMode(dataPin, OUTPUT);  
  33.   pinMode(tempPin, INPUT);
  34.   sensors.begin();
  35.   Serial.begin(9600);
  36. }
  37.  
  38. //writes the temperature on display
  39. void updateDisp(){
  40.   for(byte j=0; j<4; j++)  
  41.     digitalWrite(digitPins[j], LOW);
  42.  
  43.   digitalWrite(latchPin, LOW);  
  44.   shiftOut(dataPin, clockPin, LSBFIRST, B11111111);
  45.   digitalWrite(latchPin, HIGH);
  46.  
  47.   delayMicroseconds(100);
  48.   digitalWrite(digitPins[digitScan], HIGH);
  49.  
  50.   digitalWrite(latchPin, LOW);  
  51.   if(digitScan==2)
  52.     shiftOut(dataPin, clockPin, LSBFIRST, ~(digit[digitBuffer[digitScan]] | B10000000)); //print the decimal point on the 3rd digit
  53.   else
  54.     shiftOut(dataPin, clockPin, LSBFIRST, ~digit[digitBuffer[digitScan]]);
  55.  
  56.   digitalWrite(latchPin, HIGH);
  57.   digitScan++;
  58.   if(digitScan>3) digitScan=0;
  59. }
  60.  
  61. void loop(){
  62.   sensors.requestTemperatures();
  63.   tempC = sensors.getTempCByIndex(0);
  64.   Serial.println(tempC);
  65.   tempC = int(tempC*100);  
  66.   digitBuffer[3] = int(tempC)/1000;
  67.   digitBuffer[2] = (int(tempC)%1000)/100;
  68.   digitBuffer[1] = (int(tempC)%100)/10;
  69.   digitBuffer[0] = (int(tempC)%100)%10;
  70.   updateDisp();
  71.   delay(1000);
  72.  }
(#) e-chipmunk hozzászólása Jún 17, 2013 /
 
Üdv,
DS18B20-as hőmérő mért értékét szeretném serial monitorra kiírni. A kódot az azrduino honlapjáról vettem :
  1. #include <OneWire.h>
  2.  
  3. // DS18S20 Temperature chip i/o
  4. OneWire ds(10);  // on pin 10
  5.  
  6. void setup(void) {
  7.   // initialize inputs/outputs
  8.   // start serial port
  9.   Serial.begin(9600);
  10. }
  11.  
  12. void loop(void) {
  13.   byte i;
  14.   byte present = 0;
  15.   byte data[12];
  16.   byte addr[8];
  17.  
  18.   if ( !ds.search(addr)) {
  19.       Serial.print("No more addresses.\n");
  20.       ds.reset_search();
  21.       return;
  22.   }
  23.  
  24.   Serial.print("R=");
  25.   for( i = 0; i < 8; i++) {
  26.     Serial.print(addr[i], HEX);
  27.     Serial.print(" ");
  28.   }
  29.  
  30.   if ( OneWire::crc8( addr, 7) != addr[7]) {
  31.       Serial.print("CRC is not valid!\n");
  32.       return;
  33.   }
  34.  
  35.   if ( addr[0] == 0x10) {
  36.       Serial.print("Device is a DS18S20 family device.\n");
  37.   }
  38.   else if ( addr[0] == 0x28) {
  39.       Serial.print("Device is a DS18B20 family device.\n");
  40.   }
  41.   else {
  42.       Serial.print("Device family is not recognized: 0x");
  43.       Serial.println(addr[0],HEX);
  44.       return;
  45.   }
  46.  
  47.   ds.reset();
  48.   ds.select(addr);
  49.   ds.write(0x44,1);         // start conversion, with parasite power on at the end
  50.  
  51.   delay(1000);     // maybe 750ms is enough, maybe not
  52.   // we might do a ds.depower() here, but the reset will take care of it.
  53.  
  54.   present = ds.reset();
  55.   ds.select(addr);    
  56.   ds.write(0xBE);         // Read Scratchpad
  57.  
  58.   Serial.print("P=");
  59.   Serial.print(present,HEX);
  60.   Serial.print(" ");
  61.   for ( i = 0; i < 9; i++) {           // we need 9 bytes
  62.     data[i] = ds.read();
  63.     Serial.print(data[i], HEX);
  64.     Serial.print(" ");
  65.   }
  66.   Serial.print(" CRC=");
  67.   Serial.print( OneWire::crc8( data, 8), HEX);
  68.   Serial.println();
  69. }


Beillesztem a progiba és a következő hibát kapom:

sketch_jun17a:4: error: 'OneWire' does not name a type
sketch_jun17a.ino: In function 'void loop()':
sketch_jun17a:18: error: 'ds' was not declared in this scope
sketch_jun17a:30: error: 'OneWire' has not been declared
sketch_jun17a:47: error: 'ds' was not declared in this scope
sketch_jun17a:67: error: 'OneWire' has not been declared

Kérdésem, hogy hogyan tudom megszüntetni az errorokat? Válaszokat előre is köszönöm!
(#) e-chipmunk válasza e-chipmunk hozzászólására (») Jún 17, 2013 /
 
Nos, a fenti hibákat sikerült kiküszöbölni a OneWire.h Libraries mappába történő behúzásával (letöltöttem)
Most a következő hiba van:

DS18x20_Temperature:18: error: redefinition of 'OneWire ds'
DS18x20_Temperature:10: error: 'OneWire ds' previously declared here
DS18x20_Temperature.pde: In function 'void setup()':
DS18x20_Temperature:20: error: redefinition of 'void setup()'
DS18x20_Temperature:12: error: 'void setup()' previously defined here
DS18x20_Temperature.pde: In function 'void loop()':
DS18x20_Temperature:84: error: redefinition of 'void loop()'
DS18x20_Temperature:26: error: 'void loop()' previously defined here

Most mit tegyek?
(#) e-chipmunk válasza e-chipmunk hozzászólására (») Jún 17, 2013 /
 
Újraindítottam az Arduinot, most már lefordul, fel tudom tölteni a progit.
De miután bekötöttem a ds18b20-at, megsütötte az ujjam. Mellékelek képet hogy hogyan raktam be. Hol lehet a probléma?
(#) kissi válasza e-chipmunk hozzászólására (») Jún 17, 2013 / 1
 
Úgy látom fordított tápot kapott: a rajz alapján az 1-es lábra a +Ut, a 2-es láb a jel és a 3-as láb a GND , a felhúzóellenállás a + Ut-re csatlakozzon megint !
(#) melorin válasza e-chipmunk hozzászólására (») Jún 17, 2013 / 1
 
helyes bekötés
Egyébként van egyszerűbb kód, ami nekem működik, és még delay sincs benne:
  1. #include <OneWire.h>
  2. #include <DallasTemperature.h>
  3. #define ONE_WIRE_BUS 22 // Hőmérő a pin22-n
  4. OneWire oneWire(ONE_WIRE_BUS);
  5. DallasTemperature sensors(&oneWire);
  6. byte homero = 22;      // Hőmérő a 22-en
  7. unsigned long lastTemp;
  8. unsigned long hofok;
  9.  
  10. void setup()
  11. {
  12.   Serial.begin(9600);
  13.   sensors.begin();
  14.   pinMode(homero, INPUT);
  15. }
  16.  
  17. void loop()
  18. {
  19.   if (millis() > lastTemp + 1000 ){
  20.     sensors.requestTemperatures();
  21.     hofok = sensors.getTempCByIndex(0);
  22.     Serial.print("Vizhomerseklet: ");
  23.     Serial.println(hofok);
  24.     lastTemp = millis();
  25.   }
  26. }
A hozzászólás módosítva: Jún 17, 2013
(#) TavIR-AVR válasza melorin hozzászólására (») Jún 17, 2013 /
 
A programkód 4 karakteres, Te 3 shiftregisztert hazsnálsz...
Az átvett adatok jók?
A shiftregiszterek karakterleképezése jó?
(#) melorin válasza TavIR-AVR hozzászólására (») Jún 17, 2013 /
 
Átirogattam 3-ra a dolgokat, úgy sem jó, de persze lehet, hogy nem elég csak a 4-eseket átírnom.
Hogy érted, hogy jók-e a leképezések? Ha arra gondolsz, hogy a táviros leckében megírt kódnál jók-e, igen. Kivéve a középső karakter, ott a 6 és a 9 karakter tükörképes.
(#) TavIR-AVR válasza melorin hozzászólására (») Jún 17, 2013 /
 
Kétfelé szedném a kódot:
1, számjegy meglesése, hogy jó -e (soros debug arduinonál (println))
2, fix karaktert/számot megadni - kiírja-e
(#) ColT válasza melorin hozzászólására (») Jún 17, 2013 /
 
További hasznos debug, ha egyenként lépteted végig a dolgokat, ezzel kiderül, melyik bitre mit lép.
(#) e-chipmunk válasza melorin hozzászólására (») Jún 17, 2013 /
 
Üdv, jaja, fordítva kötöttem be, erre hamar rájöttem magamtól, de ezt már a kutya sem hiszi el
Megy szépen, írja ki az adatokat. Egymás mellé tettem párhuzamosan kettőt, így is megy, ellenállást nem tettem be másikat, ahogy utánaolvastam nem is kell. De azt hogy tudom, hogy melyiket írja előbb, melyiket később??? Tehát egy buszon vannak, de az egyik meleg helyen, a másik meg hidegen, akkor honnan tudom, hogy melyik melyik? A vezeték végéről, elejéről, vagy összevissza olvassa ki a hőmérők értékeit, pl ha van 3 darab, akkor hogy csinálja? Erre asszem csinálok egy tesztet holnap, de addig is ha van valakinek tapasztalata, akkor meghallgatom! Köszönöm a mai segítséget, szép estét!
(#) ColT válasza e-chipmunk hozzászólására (») Jún 17, 2013 /
 
Elvileg van nekik címük.
Mondjuk a legfapadabb módszer, hogy elkezded kiolvasni őket, kiírod a soros portra a címüket meg a hőmérsékletet, és az egyiket megfogod. Amelyik elkezd emelkedni, azt fogod
(#) e-chipmunk válasza ColT hozzászólására (») Jún 18, 2013 /
 
Üdv,
A címüket megtaláltam, a hőmérsékletüket is ki tudom számolni. De a kérdés arra vonatkozott, hogy ha egy buszra, az egyszerűség kedvéért 3 db -ot felfűzök, állandó távolságra egymástól, akkor milyen sorrendben olvassa őket. a megmelegítős módszerrel egyszer eljátszik az ember. Olyan kellene, ami mindig működik, akárhány hőmérő van a buszon. Teszem fel felfűzök egy buszra 5000 db-ot, azt elég körülményes lenne egyesével végigmérni, végigmelegíteni, kiolvasni a kódját. Erre tudsz, vagy tud valaki megoldást?
(#) kissi válasza e-chipmunk hozzászólására (») Jún 18, 2013 / 1
 
Szia!
Idézet:
„Erre tudsz, vagy tud valaki megoldást?”
pl. elolvasod az adatlapot ! Ott le van írva, hogy mindegyik eszköznek EGYEDI címe van, azaz meg kell címezni, mint a borítékot! Aki megkapja a parancsot/kérést, az fogja közölni a hőfokot, amit a program akkor ír ki és oda, ahova a programozó szánta ( jó esetben ! ) !
Idézet:
„Teszem fel felfűzök egy buszra 5000 db-ot”
Az adatlap ezt nem javasolja, persze próbálkozhatsz ( de nem fog sikerülni!)!
Ha szeretnéd tudni, hogy honnan kapod a hőmérsékleti adatot melegítés nélkül, akkor előre kiolvasod az azonosítóját és FELJEGYZED, hogy azt hova használtad fel !
A hozzászólás módosítva: Jún 18, 2013
(#) ColT válasza e-chipmunk hozzászólására (») Jún 18, 2013 /
 
Leírták helyettem Tudni kell, melyik a címe, és az hol van a buszon. Másképp nem fog menni.
(#) e-chipmunk válasza kissi hozzászólására (») Jún 18, 2013 /
 
Üdv, Hát jól le lettem "osztva"
De nincs harag Megértettem, többször átolvasom a datasheetet.
Annyi a lényeg, hogy nem lehet megmondani látatlanban, hogy hol vannak a hőmérők. ez sajnos kicsit elszomorító, de ha nincs más lehetőség, akkor marad az egyenkénti kiolvasás, az menni fog. Ha esetleg sikerül valamit ügyeskednem, azért megírom. Köszönöm a segítségeteket!
(#) csabeszq válasza e-chipmunk hozzászólására (») Jún 19, 2013 / 1
 
Érdekes, hogy az összes mintapéldán az 5V-ot használják a breadboardon, ahol az ember össze-vissza kötöget mindent.

Legutóbb szerelésnél minden szalagkábelt sikeresen fordítva kötöttem be, köztük a MAX-232-t is (VCC-GND-OUT-IN). Ami megmagyarázhatatlan, hogy egyik IC-m sem döglött meg.

Az Arduino azért problematikus, mert az USB közvetlenül az alaplapra megy, tehát ha gáz van, akkor az alaplapot is szétvághatja.

Én a +5V-ot vagy kívülről veszem, vagy ha 40 mA elég, akkor az egyik PIN-ről. Ilyen felállásban nincs közvetlen kapcsolat az alaplapi 5V-tal, ami szerintem biztonságosabb.
(#) e-chipmunk válasza csabeszq hozzászólására (») Jún 19, 2013 /
 
Erre most már én is fogok figyelni!
(#) TavIR-AVR válasza csabeszq hozzászólására (») Jún 19, 2013 /
 
Arduino esetén az USB-n ott szokik lenni a 500 mA-es multifuse. Azaz rövidzárnál leold. Plusz ha be van tartva az USB szabvány, akkor túláram esetén az alaplap is automatikusan leválaszt (ilyen a Compaq PII-es PC ).
(#) csabeszq válasza TavIR-AVR hozzászólására (») Jún 19, 2013 /
 
Leírom a sztorit a számítógépvásárlásról. Amint megvettem észrevettem, hogy az egyik USB port nem megy, vissza a szervízbe. Egy hónap múlva kaptam vissza, addigra sikerült kicserélniük, utána megemlítették, hogy bizonyosan én vagyok a hibás, mert merészeltem ezt-azt rádugni és örüljek a szerencsémnek, hogy garanciális csere volt.

Szóval ami az alaplapi USB-t illeti, ha arra nem voltak képesek, hogy a gyárban leteszteljék, akkor mire számíthatok még tőlük?

Ha nem raknak bele rövidzárvédelmet, a vásárló meg elégeti, az az ő baja, pereljen, ha van kedve...
(#) ColT válasza csabeszq hozzászólására (») Jún 19, 2013 /
 
Azért a legtöbb USB eszközön van rövidzárvédelem... Elég gáz, ha nem volt...
(#) csabeszq válasza ColT hozzászólására (») Jún 19, 2013 /
 
Valószínűleg van rajtuk, elfogadom.

A problémám nekem inkább elméleti: egy alaplap 50-60 eFT között mozog. Amennyiben rövidzár esetén az alaplap egy része leég, kizárt, hogy a gyártó konstrukciós hiba miatt kicserélje, vagy visszaadja a pénzt.

Lehet, hogy túl pesszimista a hozzáállásom, de úgy tapasztalom, hogy a világ egyre inkább a bunkózás felé megy el. Évekig Marc cipőt vásároltam, mígnem az egyik garanciálisan elszakadt. Ezek "szakértő" gárdát tartanak azért, hogy hivatalosan papíron igazolják, hogy a cipőt én szakítottam el, a saját hibámból és ne kelljen fizetniük. Lehet pereskedni.

Minthogy az időm drága, kiadtam egy vidéki cipésznek, aki 1500-ért megcsinálta, azóta más gyártó cipőjét veszem meg, nem pénzelem a "szakértő" gárdájukat. Biztosan megéri nekik...

Egyébként alaplapnál pontosan ugyanez a helyzet: az enyémet is azonnal küldték a "szakértő" gárdához cserénél, amelyik megállapította, hogy az alaplap hibás és nem feltétlen én okoztam a bajt. Ezek természetesen akkora hatalmasságok, hogy ha azt mondják, hogy én okoztam, akkor bizonyítsam be, hogy nem.

Ez van.
Következő: »»   8 / 849
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