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   331 / 839
(#) molnarp válasza Kovidivi hozzászólására (») Márc 28, 2017 /
 
Köszi, sikerült megoldanom.
(#) bence1971387 hozzászólása Márc 28, 2017 /
 
Sziasztok!

MPU6050 szenzor adataival próbálnék relatív pozíciót számítani.
A problémám az, hogy nem tudom ezt hogyan kéne a nyers adatokkal kivitelezni.
Esetleg jobb lenne a DMP-vel számított kombinált adatokat használni erre a célra? Azért gondolom hogy nem, mert több helyen is azt láttam, ez csak az orientációt adja vissza.

Előre is köszi a válaszokat!
(#) frob hozzászólása Ápr 2, 2017 /
 
Sziasztok

Egy BH1750 fénymérővel küzdök.
Ha egy méréses módban használom akkor az első mérés oké, viszont utána nem hajlandó semmit sem változni az értéke mindig ugyan azt adja vissza, ebben a módban a fénymérő elmenne szunyálni a két mérés között ami pár uA-es áramfelvételt eredményezne...

Berakom a komplett kódot, itt még a procit nem küldöm el sleep be vagy power down módba, csak a fénymérőt, de sajna így sem okés valami...
A használt BH1750 lib.

Vajon mi lehet a probléma?

Előre is köszönöm a segítséget!
R.

  1. // **** INCLUDES *****
  2. /*
  3.  
  4. Example of BH1750 library usage.
  5.  
  6. This example initalises the BH1750 object using the default
  7. high resolution mode and then makes a light level reading every second.
  8.  
  9. Connection:
  10.  VCC-5v
  11.  GND-GND
  12.  SCL-SCL(analog pin 5)
  13.  SDA-SDA(analog pin 4)
  14.  ADD-NC or GND
  15.  
  16. */
  17.  
  18. #include <Wire.h>
  19. #include <BH1750.h>
  20. #include "LowPower.h"
  21.  
  22. BH1750 lightMeter(0x23);
  23. void setup()
  24. {
  25.    Serial.begin(9600);
  26.     /*   Full mode list:
  27.  
  28.       BH1750_CONTINUOUS_LOW_RES_MODE
  29.       BH1750_CONTINUOUS_HIGH_RES_MODE (default)
  30.       BH1750_CONTINUOUS_HIGH_RES_MODE_2
  31.  
  32.       BH1750_ONE_TIME_LOW_RES_MODE
  33.       BH1750_ONE_TIME_HIGH_RES_MODE
  34.       BH1750_ONE_TIME_HIGH_RES_MODE_2
  35.  
  36.   */
  37.     lightMeter.begin(BH1750_ONE_TIME_LOW_RES_MODE);
  38.     delay(100);
  39.   Serial.println("Running...");  
  40. }
  41.  
  42. void loop()
  43. {
  44.     // Enter power down state for 8 s with ADC and BOD module disabled
  45.    // LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);  
  46.   //  LowPower.idle(SLEEP_8S, ADC_OFF, TIMER2_OFF, TIMER1_OFF, TIMER0_OFF,
  47.  //               SPI_OFF, USART0_OFF, TWI_OFF);
  48.       uint16_t lux = lightMeter.readLightLevel();
  49.   Serial.print("Light: ");
  50.   Serial.print(lux);
  51.   Serial.println(" lx");
  52.     delay (2000);
  53.     // Do something here
  54.     // Example: Read sensor, data logging, data transmission.
  55. }
(#) Panhard válasza frob hozzászólására (») Ápr 2, 2017 /
 
Hello, próbáltad ez helyett:
  1. lightMeter.begin(BH1750_ONE_TIME_LOW_RES_MODE);

ezt:
  1. lightMeter.begin(BH1750_CONTINUOUS_HIGH_RES_MODE);

Lehet, hogy az ONE_TIME módban minden kiolvasás előtt meg kell hívni a lightMeter.begin függvényt.
A hozzászólás módosítva: Ápr 2, 2017
(#) frob válasza Panhard hozzászólására (») Ápr 2, 2017 /
 
Ééééés nyertél!!!

Kell a begin, a continous mode nem játszik sokat zabál
De így egész jó, igaz kicsit lassabban reagál, mint kellene, 2-3 mérés után áll be az állapot, de jelen esetben ez mindegy

Köszönöm a segítséged!
(#) frob hozzászólása Ápr 2, 2017 /
 
Sziasztok

Próbálgatom az sd kártya kezelést, megy is, csak szeretném lekapcsolni a kártyát, hogy csökkentsem az áramkör fogyasztását....
Netet túrva, sokan ütköznek ebbe a problémába... Hogy is kellene ezt normálisan csinálni, program elszállást elkerülendő...

Előre is köszönöm!
R.
(#) saviola88 hozzászólása Ápr 2, 2017 /
 
Sziasztok!
Segítséget szeretnék kérni. Letöltöttem egy 433mhz-es ledes ki-be kapcsolós sketch-et a virtualWire könyvtárral együtt Link. A problémám az lenne hogy nem jövök rá, hogyan tudnám elérni azt hogy a ledeket ne fel-le kapcsoljam, hanem csak addig világítson amíg a gombot nyomva tartom.
Valakinek valami ötlet?

transmitter:

  1. #include <VirtualWire.h>
  2. //author of the library: Mike McCauley
  3. byte ledState = B00;
  4. byte ledState2 = B00;
  5. byte ledStates = B00;
  6.  
  7. byte sendState =0;
  8.  
  9. int counter =0;
  10. int counter2 =0;
  11. const int buttonPin = 2;    // the number of the pushbutton pin
  12. const int buttonPin2 = 3;
  13. int buttonState;             // the current reading from the input pin
  14. long lastDebounceTime = 0;  // the last time the output pin was toggled
  15. long debounceDelay = 50;    // the debounce time; increase if the output flickers
  16. int buttonState2;             // the current reading from the input pin
  17. long lastDebounceTime2 = 0;  // the last time the output pin was toggled
  18. long debounceDelay2 = 50;    // the debounce time; increase if the output flickers
  19. char ledStatesChar[2];    //char array; stores the Led States; needed in vw_send function
  20.  
  21. void setup()
  22. {
  23.     // Initialise the IO and ISR
  24.     // vw_set_ptt_inverted(true); // Required for DR3100
  25.     vw_setup(2000);      // Bits per sec
  26.    
  27.       pinMode(buttonPin, INPUT);
  28.       pinMode(buttonPin2, INPUT);
  29. }
  30.  
  31. void loop()
  32. {
  33.   if(sendState == 1){    //data is only send if a button was pressed
  34.     ledStates =(ledState | ledState2);
  35.     itoa(ledStates, ledStatesChar, 10);  
  36.     digitalWrite(13, true); // Flash a light to show transmitting
  37.     vw_send((uint8_t *)ledStatesChar, strlen(ledStatesChar));
  38.     vw_wait_tx(); // Wait until the whole message is gone
  39.     digitalWrite(13, false);
  40.   }
  41.   sendState =0;
  42.  
  43.   //debounce code button 1:
  44.   int buttonValue = digitalRead(buttonPin);
  45.   if ((millis() - lastDebounceTime) > debounceDelay) {
  46.     if (buttonState != buttonValue) {
  47.       if(buttonValue == HIGH){
  48.         counter++;    
  49.         if ((counter%2 ==0)) {
  50.           ledState = B00; //00 = first LED off, 01 = first LED on
  51.         }
  52.         else {
  53.           ledState = B01;
  54.         }
  55.         sendState =1;
  56.       }
  57.     lastDebounceTime = millis();
  58.     buttonState = buttonValue;  
  59.     }
  60.   }
  61.  
  62.   //debounce code button 2:
  63.   int buttonValue2 = digitalRead(buttonPin2);  
  64.   if ((millis() - lastDebounceTime2) > debounceDelay2) {
  65.     if (buttonState2 != buttonValue2) {
  66.       if(buttonValue2 == HIGH){
  67.         counter2++;  
  68.       if ((counter2%2 ==0)) {
  69.         ledState2 = B00;    //00 = second LED off, 10 = second LED on
  70.       }
  71.       else {
  72.         ledState2 = B10;
  73.       }
  74.       sendState =1;
  75.       }
  76.     lastDebounceTime2 = millis();
  77.     buttonState2 = buttonValue2;  
  78.     }
  79.   }
  80. }


receiver:

  1. #include <VirtualWire.h>
  2. //author of the library: Mike McCauley
  3. const int ledRed = 2;
  4. const int ledGreen = 3;
  5.  
  6. char ledStatesChar[2];
  7. byte ledStates = B00;
  8. byte ledState = B00;
  9. byte ledState2 = B00;
  10.  
  11. void setup()
  12. {
  13.     pinMode(ledRed, OUTPUT);
  14.     pinMode(ledGreen, OUTPUT);
  15.  
  16.     // Initialise the IO and ISR
  17.     // vw_set_ptt_inverted(true); // Required for DR3100
  18.     vw_setup(2000);      // Bits per sec
  19.     vw_rx_start();       // Start the receiver PLL running
  20. }
  21.  
  22. void loop()
  23. {
  24.     uint8_t buf[VW_MAX_MESSAGE_LEN];
  25.     uint8_t buflen = VW_MAX_MESSAGE_LEN;
  26.  
  27.     if (vw_get_message(buf, &buflen)) // Non-blocking
  28.     {
  29.         int i;
  30.         digitalWrite(13, true); // Flash a light to show received good message 
  31.         for (i = 0; i < buflen; i++)
  32.           {
  33.           ledStatesChar[i] = char(buf[i]);  //save the data
  34.           }
  35.         ledStatesChar[buflen] = '\0';
  36.         ledStates = atoi(ledStatesChar);
  37.         digitalWrite(13, false);
  38.     }
  39.     ledState = ledStates & B01;
  40.     ledState2 = ledStates & B10;
  41.     digitalWrite(ledRed, ledState);       //turns the LED on or off
  42.     digitalWrite(ledGreen, ledState2);    //turns the LED on or off
  43. }
A hozzászólás módosítva: Ápr 2, 2017
(#) frob hozzászólása Ápr 2, 2017 /
 
Szia

if (buttonState != buttonValue) ezt a sort és a hozzá tartozó kapcsos zárójeleket venném le...
Mindkét gombnál.

R.
(#) saviola88 válasza frob hozzászólására (») Ápr 2, 2017 /
 
Szia!
Sajnos semmi nem változott, ugyanúgy működik mint elötte.
(#) saviola88 hozzászólása Ápr 2, 2017 /
 
köszönöm a segítséget, megoldódott
törölnöm kellett még egy pár sort, és így jó.
ez lett belőle:
  1. //debounce code button 1:
  2.   int buttonValue = analogRead(buttonPin);
  3.   if ((millis() - lastDebounceTime) > debounceDelay) {
  4.    
  5.       if(buttonValue > 300)
  6.              
  7.         {
  8.           ledState = B01; //00 = first LED off, 01 = first LED on
  9.         }
  10.         else {
  11.           ledState = B00;
  12.         }
  13.         sendState =1;
  14.       }
(#) FDAssasin hozzászólása Ápr 3, 2017 /
 
Sziasztok!
Van egy ATMega48PA-PU chipem. Még hozzá sem nyúltam, teljesen gyári állapotban van. Hogy tudnám programozni Arduino IDE-ben? Nem kell rá bootloader, USBTinyISP-vel akarom majd rátenni a programokat. (vagy akkor is kell?) Hackaday-en találtam leírást, de hiába másolom be azt a boards.txt-be, valami gondja van az pins_arduino.h-val...
Előre is köszi a válaszokat!
(#) arduinoforever válasza FDAssasin hozzászólására (») Ápr 4, 2017 /
 
Itt megtalálod a Hardware könyvtárat és a részletes leírást hozzá!
(#) molnarp hozzászólása Ápr 4, 2017 /
 
DHT22-nél ha kihagyom a 2 sec késleltetést, akkor mi van?
Illetve a VCC és a data között a felhúzó ellenállás elhagyható?
Nálam ezek nélkül is látszólag rendesen megy.
(#) icserny válasza molnarp hozzászólására (») Ápr 5, 2017 /
 
Fehér tokozású Aosong AM2302 esetén sohasem kellett felhúzó ellenállás, tehát van benne. Ellenállásmérővel 4,7k mérhető a két láb között.

A 2s késleltetés arról szól, hogy békén kell neki hagyni, hogy elvégezhesse a mérést és az adatok digitalizálását.
(#) molnarp válasza icserny hozzászólására (») Ápr 5, 2017 /
 
Akkor elvileg szenzorhibát kellene dobnia ha nem hagyok időt neki vagy pontatlan?
(#) Kovidivi válasza molnarp hozzászólására (») Ápr 5, 2017 /
 
Nekem a DHT11 magától, minden ok nélkül is hibás adatot küldött vissza, amikor pedig kaptam adatot, egyáltalán nem passzolt több páratartalom mérő szenzorhoz hasonlítva sem, és ha pl. főzésnél emelkednie kellett volna a páratartalomnak, nem történt semmi. Kb. 6-8 DHT-11-et kipróbáltam, de nekem inkább az SHT-21 jött be.
Ennek a DHT-11-nek elég a szállítás során egy teljes felületi páralecsapódás pl. sós levegős környezetben (tipikus hajós szállítás), és annyi is az érzékelőnek...
A hozzászólás módosítva: Ápr 5, 2017
(#) molnarp válasza Kovidivi hozzászólására (») Ápr 6, 2017 /
 
Na rájöttem, a program úgy van megírva, hogy csak akkor írja az adatokat, ha értelmeset válaszol. Ez delay nélkül is 2mp, tehát a delayt elhagyhatom akkor se jön gyorsabban, de legalább nem foglalja az MCU-t.
Szerencsére van nekem 3 különböző páramérőm amivel össze tudtam hasonlítani.Olyat
csinál, hogy szobában pontos, de ha hirtelen magasabb lesz a pára (terrárium), 30-40%-al magasabb értékeket ad a többihez képest és nagyon sokáig tart mire visszaáll. Ha egyáltalán beáll, mert nem vártam meg. Nekem ez nem jön be, mivel terrárium párásító vezérléshez kell.
Rendeltem egy AM2315-öt, ha megjön megosztom a tapasztalatom.
(#) molnarp hozzászólása Ápr 6, 2017 /
 
A DHT22 már normál körülmények között se mér rendesen.
Azt hiszem megvan miért: Bővebben: Link
(#) kitartás hozzászólása Ápr 6, 2017 /
 
Sziasztok! Nem bírok az arduino típus konverzióival.
Ebbe a kódba, ami természetesen nem működik kéne beilleszteni a kedvenc változóim értékét:
http.begin("http://192.168.1.101/esp.php?dsid=" + byte(addr) + "&dst1="+ float(celsius)");
Tehát a kérdés, hogy tudnám megfelelő típusra konvertálni byte típusú addr és a float típusú celsius változómat.
(#) Panhard válasza kitartás hozzászólására (») Ápr 6, 2017 / 1
 
Egy korábbi hozzászolásomban tettem fel egy ilyen példát:
Bővebben: Link
Itt String-ként fűzöm össze a küldeni valót.
(#) kitartás válasza Panhard hozzászólására (») Ápr 6, 2017 /
 
Köszi. Már megy is! Gyorsan kalapálok hozzá valami grafikon építőt és figyelhetem a melóhelyről a fólia és a kinti hőmérséklet viszonyát.
(#) tbarath válasza kitartás hozzászólására (») Ápr 6, 2017 /
 
Grafinonra szerintem rrdtool
(#) molnarp hozzászólása Ápr 6, 2017 /
 
Következő problémám:
Van ez a relé modul és pont fordítva működik, mint kéne.
Alacsony szintnél kapcsol,magasnál pedig ki.
Ezt miért így oldották meg? Meg lehet valahogy kerülni? Esetleg a HIGH/LOW-ot lehet deklarálni ON/OFF-RA úgy, hogy csak ennél a 4 pinnél vegye figyelembe?

image.png
    
(#) molnarp válasza molnarp hozzászólására (») Ápr 7, 2017 / 2
 
A megoldás : #define RELAY_ON LOW, #define RELAY_OFF HIGH
(#) kitartás válasza tbarath hozzászólására (») Ápr 7, 2017 /
 
Nem ismerem. De amit hirtelen találtam róla tetszik. A baj csak a telepítésével van. Netes tárhelyre menne a log viszont ott számomra az apt-get install nem engedélyezett .
(#) Massawa válasza molnarp hozzászólására (») Ápr 7, 2017 /
 
Alapbol jo szokás, ha a kimenet alacsony szintje az aktiv. A kimenetek többsége open collectoros kivitelü, azaz a terhelés a Vcc és a kimenet között van. Igy nagyobb teljesitményre képes és ellenállobb is. ( nehezebb hibát csinálni egy rövidzárra).
(#) vargham válasza molnarp hozzászólására (») Ápr 7, 2017 /
 
Ahogy a többiek is írták, ez teljesen szokványos működés. Rengeteg helyen találkozhatsz negatív logikával. A kérdés inkább az, hogy miért zavar ez téged?
(#) Hp41C válasza Massawa hozzászólására (») Ápr 7, 2017 /
 
Idézet:
„Alapból jó szokás, ha a kimenet alacsony szintje az aktiv.”

Tényleg csak szokás. Abból jön, hogy a TTL sorozat nagyobb áramot tud nyelni (a föld felé), mint kiadni (a tápról). A magas szint kiadásánál a Totem-Pole kimenet a tápfeszültségnél jelentősen alacsonyabb szintet ad.
Idézet:
„A kimenetek többsége open collectoros kivitelű, azaz a terhelés a Vcc és a kimenet között van.”

Sokkal nagyobb előny, hogy a vezérelt áramkör és a vezérlő áramkör tápellátása szétválasztható és akár eltérő feszültségű is lehet.
Idézet:
„... nehezebb hibát csinálni egy rövidzárral ...”

Minden áramköri megoldásnál könnyű hibát csinálni rövidzárral. Ha a kimenetet rövidzárbiztosra (áramkorláttal) tervezték, akkor kibírja, ha nem akkor károsodhat. Egy NPN tranzisztoros nyitott kollektoros, N-MOS nyitott nyelőelektródás kimenet a tápfeszültséghez, egy PNP tranzisztoros nyitott kollektoros, P-MOS nyitott nyelőelektródás kimenet a földhöz történő rövidzárral tehető tönkre.
(#) akosnagy hozzászólása Ápr 7, 2017 /
 
Sziasztok!

Még mindig az ATMEGA328P-PWM-Motor vezérléssel harcolok. Összeraktam az áramkört, de valamit valahol elhibáztam.
Emlékeztetőül felteszem az eredeti kapcsolást valamint kiemelve a motor vezérlő részt, mérésekkel. Illetve mellékelek egy képet ami alapján bekötöttem a MOSFET-et (lábkiosztás).
Valamint itt a program.

  1. #define F_CPU 20000000
  2.  
  3. #include <avr/io.h>
  4. #include <util/delay.h>
  5.  
  6. int main(void)
  7. {
  8.         DDRD |= (1 << PORTD6);
  9.         OCR0A = 0;
  10.         TCCR0A |= (1 << COM0A1);
  11.         TCCR0A |= (1 << WGM01) | (1 <<WGM00);
  12.         TCCR0B |= (1 << CS01);
  13.        
  14.     while (1)
  15.     {
  16.                 for(int i=0;i<255;i++)
  17.                 {
  18.                         OCR0A = i;
  19.                         _delay_ms(1);
  20.                 }
  21.                 for(int i=255;i>0;i--)
  22.                 {
  23.                         OCR0A = i;
  24.                         _delay_ms(1);
  25.                 }
  26.  
  27.     }
  28. }


A mérések alapján e jel szépen kimegy, 0-5V-ig változik az érték. Ami a gondom, hogy E-D pontok közt nagyon kicsi a fesz. A motort amit oda szánok 6-8,4V hajtja meg.
Mit rontottam el?

A méréseket egy teljesen alap multiméterrel csináltam, lehet benne némi difi, de nagyságrendileg biztosan jó.
(#) Panhard válasza akosnagy hozzászólására (») Ápr 7, 2017 /
 
Én tennék a fet elé egy fetmeghajtó IC-t vagy tranzisztort. 5V kevés a fetnek, hogy teljesen kinyisson. És az áram is kevés hozzá, amit a mikrokontroller le tud adni.
Bővebben: Link
A hozzászólás módosítva: Ápr 7, 2017
Következő: »»   331 / 839
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.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