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   354 / 852
(#) gerleimarci válasza kapu48 hozzászólására (») Jún 15, 2017 /
 
Köszi a gyors választ
(#) gerleimarci hozzászólása Jún 15, 2017 /
 
Alakul
  1. #define numframes 4
  2. uint8_t leds[10] =
  3.   {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
  4. uint8_t frame[numframes][10] =
  5. { {1, 1, 1, 1, 1, 0, 0, 0, 0, 0},
  6.   {0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  7.   {0, 0, 0, 0, 0, 1, 1, 1, 1, 1},
  8.   {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
  9. };
  10.  
  11. void setup()
  12. {
  13.   for (int i = 0; i < 11; i++)
  14.     pinMode(leds[i], OUTPUT);
  15. }
  16.  
  17. void loop()
  18. {
  19.   for (int x = 0; x < (numframes); x++)
  20.   {
  21.  
  22.     for (int i = 0; i < 10; i++)
  23.     {
  24.       digitalWrite(leds[i], frame[x][i]);
  25.     }
  26.     delay(1000);
  27.   }
  28. }
(#) szeg76 válasza gerleimarci hozzászólására (») Jún 15, 2017 /
 
A kimenetek állapotait tárolhatjuk 1-1 biten is:
  1. #define N_LED 10
  2. #define NUMFRAMES 16
  3. uint8_t leds[10] =
  4. {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
  5. /*
  6. uint8_t frame[NUMFRAMES][10] =
  7. { {1, 1, 1, 1, 1, 0, 0, 0, 0, 0},
  8.   {0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  9.   {0, 0, 0, 0, 0, 1, 1, 1, 1, 1},
  10.   {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
  11. };
  12. */
  13. unsigned frame_w[NUMFRAMES]=
  14. {
  15. 0B0000000100100100,
  16. 0B0000001001001001,
  17. 0B0000000010010010,
  18. 0B0000000101010000,
  19. 0B0000001110000000,
  20. 0B0000001100000000,
  21. 0B0000001000000000,
  22. 0B0000000000000000,
  23. 0B0000000000000001,
  24. 0B0000000000000010,
  25. 0B0000000000000100,
  26. 0B0000000000001001,
  27. 0B0000000000010010,
  28. 0B0000000000100100,
  29. 0B0000000001001001,
  30. 0B0000000010010010
  31. };
  32.  
  33. void setup()
  34. {
  35.   for (int i = 0; i < N_LED; i++)
  36.     pinMode(leds[i], OUTPUT);
  37. }
  38.  
  39. void loop()
  40. {
  41.   for (int x = 0; x < (NUMFRAMES); x++)
  42.   {
  43.  
  44.     for (int i = 0; i < N_LED; i++)
  45.     {
  46.       digitalWrite(leds[i], bitRead(frame_w[x],i ) );
  47.     }
  48.     delay(1000);
  49.   }
  50. }
(#) Electricboy hozzászólása Jún 15, 2017 /
 
Sziasztok!
Ismét van egy cifrább kérdésem:
Az arduino (uno, nano) tud egyszerre kezelni egy encodert és egy oledes kijelzőt(128*64 I2C)? Mert nekem nem nagyon akar összejönni. A tesztem gyakorlatilag annyi hogy az encoderrel léptetek egy számlálót és ennek az értékét kiíratom az oledre. A gond az hogy sok időt vesz igénybe a kijelzőre való folyamatos kiírás (frissítés) és így az encoder gyakorlatilag összevissza számol (le marad a proci az élváltásokról). Próbáltam azt is hogy x időnként firssítem csak a kijelzőt, mondjuk 300ms, itt még nagyjából jól számol az encoder, csak olyan darabos a kiírás és ez sajnos nem nagyon fogadható el, nagyjából realtime-nak kéne lennie. A célom egy menürendszer kialakítása lenne (ami egy sima karakteres LCD-n már működött) ide-oda lapozgatás értékek bevitele encoderrel stb.
Kevés ehhez a 16MHz, vagy lehet nem jól látom a dolgot?
Ezek jutottak eszembe: megszakítás, más fejlesztő eszköz használata(erősebb vas) pl arduino due (84MHz), SPI oled(?) ?

Be rakom a teszt kódot amin a 300ms-es frissítés van, eléggé szedett-vedett, kétnyelvű, de talán látni a dolgokat.
  1. #include <Wire.h>
  2. #include <Adafruit_GFX.h>
  3. #include <Adafruit_SSD1306.h>
  4. #define OLED_RESET 4
  5. Adafruit_SSD1306 display(OLED_RESET);
  6. #if (SSD1306_LCDHEIGHT != 64)
  7. #error("Height incorrect, please fix Adafruit_SSD1306.h!");
  8. #endif
  9. /*-------encoder------*/
  10. #define outputA A2
  11. #define outputB A3
  12. int counter = 0;
  13. int aState;
  14. int aLastState;
  15. #define frissites 2 //frissites (ms)
  16. #define nemfrissit 300 // frissitesek közti idő ms-ben
  17. long lastAllapot = 0;
  18. int frissit = HIGH;  //frissiteshoz
  19.  
  20. void setup(){
  21.   pinMode (outputA, INPUT);
  22.   pinMode (outputB, INPUT);
  23.   Serial.begin (9600);
  24.   aLastState = digitalRead(outputA);
  25.   display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  // initialize with the I2C addr 0x3D (for the 128x64)
  26. }
  27.  
  28. void loop() {
  29. //frissiteshez
  30.   if (frissit == 0 && (millis() - lastAllapot > nemfrissit)) {
  31.     frissit = 1;
  32.     lastAllapot = millis();
  33.   }
  34.  
  35.   if (frissit == 1 && (millis() - lastAllapot > frissites)) {
  36.     frissit = 0;
  37.     lastAllapot = millis();
  38.   }
  39.  
  40.   //Encoder
  41.   aState = digitalRead(outputA);
  42.   if (aState != aLastState) {
  43.     if (digitalRead(outputB) != aState) {
  44.       counter ++;
  45.     } else {
  46.       counter --;
  47.     }
  48.     // Serial.print("Position: ");
  49.     //  Serial.println(counter);
  50.  }
  51.   aLastState = aState;
  52.   /*---------------------------------------------------------------------------*/
  53.  
  54.   if (frissit == 1) {
  55.     display.clearDisplay();
  56.     display.setTextSize(2);
  57.     display.setTextColor(WHITE);
  58.     display.setCursor(40, 0);
  59.     display.print("Men");
  60.     display.write(129); //ü
  61.     display.drawLine(0, 16, 128, 16, WHITE); //vonal bufferelése
  62.     display.fillRect(0, 20, 128, 9, WHITE); //kitoltott teglalap
  63.     display.setTextSize(1);
  64.     display.setTextColor(BLACK); //kitolte miatt invert
  65.     display.setCursor(3, 21);
  66.     display.print("Menu1");
  67.     display.setTextColor(WHITE);
  68.     display.setCursor(3, 31);
  69.     display.print("Menu2");
  70.     display.setCursor(3, 41);
  71.     display.print("Position: ");
  72.     display.print(counter);
  73.     display.display();
  74.   }
  75. }
(#) andyka válasza Electricboy hozzászólására (») Jún 15, 2017 /
 
Az encodert interrupt-ra kellene tenni Bővebben: Link és akkor "instant" működik. A kiírást pedig csak akkor amikor szükség ( ertek változáskor ).
A hozzászólás módosítva: Jún 15, 2017
(#) kapu48 válasza Electricboy hozzászólására (») Jún 16, 2017 /
 
Az én logikám szerint. Ez nem kel:
  1. if (frissit == 1 && (millis() - lastAllapot > frissites)) {
  2.     frissit = 0;
  3.     lastAllapot = millis();
  4.   }

Hanem, mikor megtörtént a frissités, akkor nullázod:
  1. if (frissit == 1) {
  2.   frissit =0;
  3. ...

És nem töröljük az egész LCD-t, hanem csak azt a sort vagy részletett ami változott.
És az encodert Interuptba rakni!
A hozzászólás módosítva: Jún 16, 2017
(#) Robin2 hozzászólása Jún 16, 2017 /
 
Szerintetek egy sima szám.tech. boltban kapható USB-RS232 átalakítót ráköthetek közvetlenül az Atmega8 Rx-Tx lábaira programozás céljából?
Vagy ha nincs szerencsém és "jófajta" az átalakító, nem csak 0-5 V jelet ad ki?
(#) Koleus válasza Robin2 hozzászólására (») Jún 16, 2017 / 1
 
Kellene még egy szintillesztés, mert az Atmega8 bemenetén max 5 (3,3) VDC lehet, az RS-232 standard meg +/- 12 VDC jelszinttel dolgozik. Kell egy MAX232 szintillesztő, vagy tranyós szintillesztő. E-bay -en találsz USB - TTL átalakítókat (CH340, CP2102, stb)
(#) vargham válasza Robin2 hozzászólására (») Jún 16, 2017 / 1
 
Röviden: Nem. A 12 Volt kinyírja a mikrokontrollert.

Megoldás: Veszel USB TTL (Transistor Transistor Logic, vagyis 5 Voltos) soros adaptert. Magyarországon 1500 ft, külföldről 300 ft. B terv: Megveszed a számtech boltban 2-4 ezer között az adaptert. Szétszeded, 2db IC van benne, egy USB TTL és egy RS232 szintillesztő. A kettő között megcspolod az Rx, Tx jelvezetékeket, és kész is vagy.
(#) tbarath válasza vargham hozzászólására (») Jún 16, 2017 /
 
Itt a hestore-ban messze 1500 alatt van: Bővebben: Link
De még az FTDI is olcsóbb ettől: Bővebben: Link
(#) david10 hozzászólása Jún 17, 2017 /
 
Sziasztok,
Az alábbi 2 hopeRF modul között mi a külömbség? Melyik a "jobb"? azt jól tudom, hogy az elektronikában olyan nincs, hogy "jobb", mindig feltételeket kell kötni...

Azt megértettem, hogy az eggyik +13dBm-es és a másik +20dBm-es, de melyik hova ajánlottab?

RFM69W-433S:
+13 dBm Power Output Capability

RFM69HW-433S2
+20 dBm - 100 mW Power Output Capability

Nekem csak arra kellene, hogy max. 10m-ig tudjon venni és fogadni és analizálni távírányító jeleket.
A választ előre is köszönöm!
A hozzászólás módosítva: Jún 17, 2017
(#) Bakman válasza david10 hozzászólására (») Jún 17, 2017 /
 
Ezzekkel nem fogsz semmilyen távirányító jelet analizálni. Az RF jelet kell fogni közvetlen, azt lehet analizálni, dekódolni tetszés szerint.

Ezek a modulok beszélgetnek egymással, de a kódolást és a dekódolást maguk végzik el, te csak az információt fogod látni, a konkrét rádióadást nem. Van egy csomó technika arra, hogy RF hullámokon adatot továbbítsunk, a modulok nem ismerik mindegyiket. Lehet, hogy a távirányító olyan frekvenciát használ, amit ezek a modulok észre sem vesznek.

Milyen távirányítóról van szó? Remélhetőleg nem autó és/vagy kapunyitó távirányítók. Igaz, ezekkel a modulokkal ott semmire sem mész.
A hozzászólás módosítva: Jún 17, 2017
(#) Kera_Will válasza david10 hozzászólására (») Jún 18, 2017 /
 
Idézet:
„hogy max. 10m-ig tudjon venni és fogadni és analizálni távírányító jeleket.”

Erre bármilyen 433 MHz-en működő szupregvevő jó.
Bármelyik távirányító vevőoldala hasznosítható.
Kimenetét hangkártyára kötve láthatod a pulzákat, felveheted, analizálhatod.
(#) david10 válasza Bakman hozzászólására (») Jún 18, 2017 /
 
A terv az lett volna, hogy egy Mercedes kulccsal lehessen irányítani a PowerPointot.
A feladat furán hangzik, de szerintem kivitelezhető volna egy megfelelő vevővel.
A cégnél, ahol dolgozok, ott van egy Zed-Full nevezetü csodamasina, amelyben ha kiválasztom, hogy 433mhz-es Mercedes távirányírányítom van és megnyomok egy gombot a távirányíton, akkor kiírja a kapott kódot, aminek az első 4 bájtja fix, az ötödik bájtja a megnyomott gomb függvényében változik, és a többi ugró bájt.
Nekem elég volna az első 5 bájtból, irányítani a PowerPointot.
Írta azt is, hogy FSK vagy ASK kódolásu jelet vár a távirányítótol.
Ma vagy holnap küldök videót a gépről.

Azért szerettem volna univerzális vevőt, hogy tudjak többfajta távirányítóval is kisérletezni.

Kera_will:Egy ilyenre volna szükségem?
A hozzászólás módosítva: Jún 18, 2017
(#) bbb válasza david10 hozzászólására (») Jún 18, 2017 /
 
Szia!

Nézegesd az SDRsharp oldalát, sok ötletet meríthetsz belőle. Egy sima párdolláros DVB-t tunerrel működik a történet, csak programoznod kell utána. Viszont a programozás részét akár GNURadio is megoldja. Ha tényleg csak távirányítóként akarod használni ezeket, akkor ez járható út lehet, ámde sokkal egyszerűbb lenne direkt erre a célra kitalált egeret használni (lézerpointerrel, előre-hátra gombbal).
(#) Kera_Will válasza david10 hozzászólására (») Jún 18, 2017 /
 
pl igen ezekből csak a receiver része avagy ha ennél részben jobb és ügyesebb vevőt szeretnél az SDR alapú: RTL-SDR
(#) david10 válasza david10 hozzászólására (») Jún 19, 2017 /
 
Köszönöm a válaszokat, a kérdést azért tettem fel, mert terveztem egy RFID shieldet és még volt rajta hely bővön egyébnek is.
Ráterveztem az RFM69HW modult, és majd egy másik RFM69HW modullal megprobálom leolvasni, és egy általatok ajánlott SDR vevővel megprobálom tanulmányozni.
Mentek a zöld kezek is!
További szép napot!
A hozzászólás módosítva: Jún 19, 2017
(#) vyky hozzászólása Jún 20, 2017 /
 
Sziasztok. Valaki mondja el miért van az ,hogy az lcd nem írja ki a szöveget teljes hosszában?
  1. // include the library code:
  2. #include <LiquidCrystal_SR.h>
  3. #include <Wire.h>
  4. #include <math.h>
  5.  
  6. // initialize the library with the numbers of the interface pins
  7. LiquidCrystal_SR lcd(7,8,TWO_WIRE);
  8.  
  9. #define ThermistorPIN 0                 // Analog Pin 0
  10.  
  11. float vcc = 5;                       // only used for display purposes, if used
  12.                                         // set to the measured Vcc.
  13. float pad = 87400;                       // balance/pad resistor value, set this to
  14.                                         // the measured resistance of your pad resistor
  15. float thermr = 10000;                   // thermistor nominal resistance
  16.  
  17. float Thermistor(int RawADC) {
  18.   long Resistance;  
  19.   float Temp;  // Dual-Purpose variable to save space.
  20.  
  21.   Resistance=((1024 * pad / RawADC) - pad);
  22.   Temp = log(Resistance); // Saving the Log(resistance) so not to calculate it 4 times later
  23.   Temp = 1 / (0.001129148 + (0.000234125 * Temp) + (0.0000000876741 * Temp * Temp * Temp));
  24.   Temp = Temp - 273.15;  // Convert Kelvin to Celsius                      
  25.  
  26.   // BEGIN- Remove these lines for the function not to display anything
  27.   //Serial.print("ADC: ");
  28.   //Serial.print(RawADC);
  29.   //Serial.print("/1024");                           // Print out RAW ADC Number
  30.   //Serial.print(", vcc: ");
  31.   //Serial.print(vcc,2);
  32.   //Serial.print(", pad: ");
  33.   //Serial.print(pad/1000,3);
  34.   //Serial.print(" Kohms, Volts: ");
  35.   //Serial.print(((RawADC*vcc)/1024.0),3);  
  36.   //Serial.print(", Resistance: ");
  37.   //Serial.print(Resistance);
  38.   //Serial.print(" ohms, ");
  39.   // END- Remove these lines for the function not to display anything
  40.  
  41.   // Uncomment this line for the function to return Fahrenheit instead.
  42.   // Temp = (Temp * 9.0)/ 5.0 + 32.0;                  // Convert to Fahrenheit
  43.  
  44.   return Temp;                                      // Return the Temperature
  45. }
  46.  
  47. void setup() {
  48.   pinMode(13, OUTPUT);
  49.  
  50.   // Serial.begin(115200);
  51.     // set up the LCD's number of columns and rows:
  52.   lcd.begin(16, 2);
  53.   // Print a message to the LCD.
  54.   lcd.print("Hello Word");
  55.   delay(2000);
  56. }
  57.  
  58. void loop() {
  59.   float temp;
  60.   temp=Thermistor(analogRead(ThermistorPIN));       // read ADC and  convert it to Celsius
  61.   Serial.print("Celsius: ");
  62.   Serial.print(temp,1);                             // display Celsius
  63.    temp = (temp * 9.0)/ 5.0 + 32.0;                 // converts to  Fahrenheit
  64.   // Serial.print(", Fahrenheit: ");
  65.   Serial.print(temp,1);                             // display  Fahrenheit                                  
  66.   lcd.begin(16,2);
  67.   lcd.print("Celsius: ");
  68.   lcd.setCursor(0, 1);
  69.   lcd.print(temp,1);
  70.   if (temp < 50.0) {                                // SET TEMPERATURE HERE!
  71.   digitalWrite(13, HIGH);
  72.   }
  73.   else {
  74.     digitalWrite(13, LOW);
  75.   }
  76.   delay(1000);                                      // Delay a bit...
  77. }

A Hello Word helyett csak annyi van hogy Hello W.
Nem jövök rá mit hibázok,előre is köszönöm.
(#) KoblogPerGyok válasza vyky hozzászólására (») Jún 20, 2017 /
 
Szia!

lcd.setCursor(0, 1);

Ez is kellene a setup-ba a kiírás előtt. Lehet ez megoldja a gondod.
(#) KoblogPerGyok válasza vyky hozzászólására (») Jún 20, 2017 /
 
De ez sem biztos, mert nem tudom, hogy így írja-e ki:

' Hello W'

vagy:

'Hello W '
(#) vyky válasza KoblogPerGyok hozzászólására (») Jún 20, 2017 /
 
Sajnos nem javított a helyzeten
(#) Medve válasza vyky hozzászólására (») Jún 20, 2017 /
 
Hali, lehet olyanféle LCD, ahol az egy 16 karakteres sort kettő nyolcasként kezel. Folytasd a kiírást, és egyszer csak megjelenik.
(#) KoblogPerGyok válasza vyky hozzászólására (») Jún 20, 2017 /
 
Az LCD 16 karakteres és 2 soros?

Azaz soronként 16 karakteres?
A hozzászólás módosítva: Jún 20, 2017
(#) KoblogPerGyok válasza KoblogPerGyok hozzászólására (») Jún 20, 2017 /
 
Nézem, de azt hiszem nem ott lesz a gond, mint eddig gondoltam. Az LCD-t mindenképpen shift regiszterrel akarod megoldani?

Nézegetem a .h fájlt ott nem értek egyelőre mindent, de lehet nem is azt nézem ami neked van. Elküldöd a linket ahonnan letöltötted?
(#) czibo hozzászólása Jún 23, 2017 /
 
Üdv mindenkinek!
Lenne egy olyan kérdésem, hogy Arduino uno-bol kiveszem a felprogramozott controllert, megfelelően bekötöm, miért nem működik?
(#) kapu48 válasza czibo hozzászólására (») Jún 23, 2017 /
 
Minimum ennyi körítés kel mellé:
Bővebben: Link
(#) vargaf válasza czibo hozzászólására (») Jún 23, 2017 /
 
Ha látnánk mit nevezel megfelelő bekötésnek, tudnánk válaszolni, így csak találgatni lehetne.
A hozzászólás módosítva: Jún 23, 2017
(#) czibo válasza kapu48 hozzászólására (») Jún 24, 2017 /
 
Hát a kvarc az kimaradt, azt gondoltam úgy működik mint az MSP. A többi az rendbe volt.
(#) vargham válasza czibo hozzászólására (») Jún 24, 2017 /
 
Lehet kvarc nélkül, belső oszcillátorról használni. Max 8 MHz lehet az órajel. De akkor úgy is kell megírni a programot, és felprogramozni a mikrokontrollert. (Biztosíték bitek, stb.)
(#) Kari55 hozzászólása Jún 24, 2017 /
 
Sziasztok!

Én próbálom Ezt az IR vezérlést, csak annyi különbséggel, hogy nekem tsop1738 IR vevőm és egy Orion DVD lejátszó távirányító van, de nem akar működni.

Már többször nekifutottam és mindig ezzel hibaüzenettel leáll: "exit status 1
Hiba a(z) Arduino Nano alaplapra fordításra." pedig betűről betűre megegyezik a kód. Már írtam a videó készítőjének, de még nem kaptam választ.

A kód:
  1. #include<IRremote.h>
  2.  
  3. IRrecv tsop1738(4);
  4. decode_results result;
  5.  
  6.  
  7. const byte buttonPin = 3;
  8. const byte ledPin = 2;
  9.  
  10. byte btnState = HIGH;
  11. byte btnPreState = HIGH;
  12. byte ledPreState = LOW;
  13. byte ledState = LOW;
  14.  
  15.  
  16. long time = 0;
  17. byte debounce = 200;
  18.  
  19. void setup() {
  20.   // put your setup code here, to run once:
  21.  
  22. tsop1738.enableIRIn();
  23. pinMode(buttonPin,INPUT);
  24. pinMode(ledPin,OUTPUT);
  25.  
  26. Serial.begin(9600);
  27. Serial.println("Betöltés kész");
  28. }
  29.  
  30. void loop() {
  31.   // put your main code here, to run repeatedly:
  32.  
  33.   btnState = digitalRead(buttonPin);
  34.  
  35.   if(tsop1738.decode(&result))
  36.   {
  37.    Serial.println(result.value);
  38.    tsop1738.resume();
  39.   }
  40.  
  41.   if(btnState == HIGH && btnPreState == LOW && millis() - time > debounce)
  42.   {
  43.     if(ledState == HIGH)
  44.     {
  45.       ledState = LOW;
  46.       Serial.println("LED ki");
  47.     }
  48.     else
  49.     {
  50.     ledState = HIGH;
  51.     Serial.println("LED be");
  52.     }
  53.     time = millis();
  54.    
  55.   }
  56.  
  57.   digitalWrite(ledPin,ledState);
  58.  
  59.   btnPreState = btnState;
  60. }


Hogyan tudnám működésre bírni?
Köszönöm előre is.
A hozzászólás módosítva: Jún 24, 2017
Következő: »»   354 / 852
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