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   645 / 847
(#) tbarath válasza sany hozzászólására (») Júl 28, 2020 /
 
1. Vagy eredeti, vagy hamisítvány (counterfeit)
2. CH340, FT232 (vagy koppintása), de másik Atmel chip is lehet
3. Hivatalosan egy atmega: Bővebben: Link
(#) szalamandra válasza sany hozzászólására (») Júl 28, 2020 /
 
Szerintem a jobb oldali az eredeti (tévedés joga fenntartva), a kezdetek kezdetén vásároltam Farnelltől, akkor még nem volt ennyire "hamisítva", papírdobozban, jó drágán, teljesen így néz ki az is. Számít, hogy mikor, honnan, mennyiért vetted, bár ez sem garancia semmire.

A középső vállaltan egy "másolat".

Ahogy ez már téma volt, igazàn nincs olyan, hogy hamisítvány (max. abban az esetben, ha teljesen úgy néz ki és annak is árulják, mint az olasz gyártmányt). Maga az Arduino név van csak levédve, maga a panel nincs, bárki készítheti, csak nem árulhatja eredeti névvel. A középső paneled ennek a példàja.
(#) krauszkrisztian14 hozzászólása Júl 28, 2020 /
 
Üdv!
A közelmúltban kaptam egyik ismerősömtől egy Siemens MC55 típusú GSM modult egy panelon, amin található maga a modul rádugva, a SIM foglalat, egy PIC 18F4620 mikroprocesszor és egy feszültségszabályzó IC. Nem igazán értek a PIC programozásához, ezért az lenne a kérdésem, hogyan tudnék én ezzel a modullal arduinoval kommunikálni? Külön kivezetésre kerültek a Tx Rx lábak. Az adatlapján nem igazán tudok kiigazodni, nem tudom a kommunikációjának sebességét se, de elvileg 9600bps. Arduinora rákötve próbáltam küldeni neki az AT parancsot, de nem küldte vissza az OK választ. Biztosan rosszul csináltam valamit, elvileg működnie kell. Én közvetlenül kötöttem rá a TX-et a TX-re, RX-et az RX-re, de nem ment. Megpróbáltam a TX-et az RX-re, és az RX-et a TX-re kötve is, de így se küldött vissza semmit. A reset mindvégig a negatívra volt kötve.
Tudna valaki segíteni életjelet kicsikarni belőle?
Előre is köszönöm!
(#) Bakman válasza krauszkrisztian14 hozzászólására (») Júl 28, 2020 /
 
A Reset lábat általában fel kell húzni a tápfeszültségre.
(#) krauszkrisztian14 válasza Bakman hozzászólására (») Júl 28, 2020 /
 
Az Arduinon?
Nekem GND-re resetel
(#) Bakman válasza krauszkrisztian14 hozzászólására (») Júl 28, 2020 /
 
PIC18F4620 még a panelen van? Ha igen, szedd le, söntölheti az RX és TX vonalakat. RX lábat TX-szel kell összekötni. A modul Reset lába, ha van, a modul tápfeszültségére legyen kötve. Próbálj USB - UART átalakítót használni, gyorsabban célba érsz, pillanatok alatt lehet pl. sebességet váltani.

AT parancsok: Bővebben: Link. Minden parancs után kell egy <CR> karakter (0x0D).
(#) krauszkrisztian14 válasza Bakman hozzászólására (») Júl 28, 2020 /
 
Igen, a panelon van. Holnap leszedem róla, és újult erővel nekiesek.
Köszönöm a segítséget!
(#) sany válasza szalamandra hozzászólására (») Júl 28, 2020 /
 
Innen a HE-storeból vettem. Eredeti szerintem is.
(#) troby hozzászólása Aug 2, 2020 /
 
Sziasztok, sajnos véletlenül kitöröltem egy projektemet de egy vissza állító programmal elvileg meg tudtam menteni a fájlt viszont nem értelmes karaktereket tartalmaz. Amikor megnyitom a fejlesztő programban az automatikus formázás felismeri a sortöréseket meg hasonlókat de nem értelmes a szöveg.
Lehetséges ezzel valamit még kezdeni vagy valamilyen helyreállítási metódus?
Köszönöm szépen.

_J_ROGI.ino
    
(#) pipi válasza troby hozzászólására (») Aug 2, 2020 /
 
Azért értelmetlen, mert ez a tartalom már nem a projektedé. Valami időközben felülírta a törölt fájlod helyét, és ezt állítottad vissza...
(#) jointsilver36 hozzászólása Aug 4, 2020 /
 
Sziasztok!Megépítettem a következő: https://www.electronoobs.com/eng_arduino_tut47_sch1.php kapcsolást.Valamiért nem tudom feltölteni a programot az arduini nanóra.A következő hibát írjía ki
  1. This report would have more information with
  2.   "Show verbose output during compilation"
  3.   enabled in File > Preferences.
  4. Arduino: 1.0.6 (Windows 7), Board: "Arduino Nano w/ ATmega328"
  5. sketch_aug04c:11: error: no matching function for call to 'DS3231:S3231(const uint8_t&, const uint8_t&)'
  6. C:\Users\jointsilver\Documents\Arduino\libraries\DS3231/DS3231.h:64: note: candidates are: DS3231::DS3231()
  7. C:\Users\jointsilver\Documents\Arduino\libraries\DS3231/DS3231.h:60: note:                 DS3231::DS3231(const DS3231&)
  8. sketch_aug04c.ino: In function 'void setup()':
  9. sketch_aug04c:58: error: 'class DS3231' has no member named 'begin'
  10. sketch_aug04c.ino: In function 'void loop()':
  11. sketch_aug04c:94: error: 'class DS3231' has no member named 'getTimeStr'
  12. sketch_aug04c:126: error: 'class DS3231' has no member named 'setTime'
  13. sketch_aug04c:128: error: 'class DS3231' has no member named 'getTimeStr'
  14. sketch_aug04c:142: error: 'class DS3231' has no member named 'setTime'
  15. sketch_aug04c:144: error: 'class DS3231' has no member named 'getTimeStr'

Mi lehet a gondja?Köszi a válaszokat.
(#) jointsilver36 válasza jointsilver36 hozzászólására (») Aug 4, 2020 /
 
Ez a kód:
  1. /*
  2. Code by: ELECTRONOOBS, 16/10/2018
  3. */
  4.  
  5. //We include the DS3231 library for the real time module
  6. DS3231  rtc(SDA, SCL);          
  7.  
  8.  
  9. //Define the I/O
  10. #define MAX7219_Clock 2         //CLK pin for the MAX7219
  11. #define MAX7219_Chip_ 3   //CS pin for the MAX7219
  12. #define MAX7219_Data_IN 4       //D_in pin for the MAX7219
  13.      
  14. int LED = 8;                    //Pin for the two blinking LEDs
  15. //int SET = 5;                  //Not used any more
  16. int HOUR = 7;                   //Input for set hour button
  17. int MINUTE = 6;                 //Input for set minute button
  18.  
  19.  
  20.  
  21. //Other variables for the code
  22. int Delay=1000;                       //Variable used for the 1 second loop. Each 1s we change the LED state so it will blink    
  23. bool LED_state = false;               //Here we save the LED state each loop, HIGH or LOW
  24. unsigned long previousMillis = 0;     //Variable used to count the 1s loop time
  25. String time_str = "";                 //Here we save the time in a string format  the ral time module
  26. String prev_time_str = "";            //We save the last time value so we could compare it
  27. String hr_1_str = "";                 //We divide the hours and minutes in separate variables first digit for hour
  28. String hr_2_str = "";                 //We divide the hours and minutes in separate variables second digit of hour
  29. String min_1_str = "";                //We divide the hours and minutes in separate variables first digit of minute
  30. String min_2_str = "";                //We divide the hours and minutes in separate variables secodn digit of minute
  31. int hr_1 = 0;                         //first digit for hour
  32. int hr_2 = 0;                         //second digit for hour
  33. int min_1 = 0;                        //first digit for minute
  34. int min_2 = 0;                        //second digit for minute
  35. int set_hour = 0;
  36. int set_minute = 0;
  37.  
  38.  
  39.  
  40. //This function will shift the data to the MAX7219 driver.
  41. void shift(byte send_to_address, byte send_this_data)
  42. {
  43.   digitalWrite(MAX7219_Chip_, LOW);
  44.   shiftOut(MAX7219_Data_IN, MAX7219_Clock, MSBFIRST, send_to_address);
  45.   shiftOut(MAX7219_Data_IN, MAX7219_Clock, MSBFIRST, send_this_data);
  46.   digitalWrite(MAX7219_Chip_, HIGH);
  47. }
  48.  
  49.  
  50.  
  51. void setup() {
  52.   //Serial.begin(9600);
  53.   rtc.begin();                                  //We start the real time module
  54.   pinMode(MAX7219_Data_IN, OUTPUT);             //Define the data pin for the MAX7219 as output
  55.   pinMode(MAX7219_Chip_, OUTPUT);         //Define the cs pin for the MAX7219 as output
  56.   pinMode(MAX7219_Clock, OUTPUT);               //Define the clock pin for the MAX7219 as output
  57.   digitalWrite(MAX7219_Chip_, HIGH);      //We set the CS to high, CS is negative enabeled
  58.  
  59.   pinMode(LED,OUTPUT);                            
  60.   //pinMode(SET,INPUT);                         //Not used any more
  61.   pinMode(HOUR,INPUT);
  62.   pinMode(MINUTE,INPUT);
  63.   //digitalWrite(SET, HIGH);                    //Not used any more
  64.   digitalWrite(HOUR, HIGH);
  65.   digitalWrite(MINUTE, HIGH);  
  66.   digitalWrite(LED,LED_state);
  67.   delay(200);
  68.  
  69.   //Setup
  70.   shift(0x0f, 0x00); //display test register - test mode off
  71.   shift(0x0c, 0x01); //shutdown register - normal operation
  72.   shift(0x0b, 0x04); //scan limit register - display digits 0 thru 7
  73.   shift(0x0a, 0x01); //intensity register - Min brightness: 0x01, Max brightness: 0x0f
  74.   shift(0x09, 0xff); //decode mode register - CodeB decode all digits
  75.  
  76.   shift(0x01, 0xff); //Turn off all segments
  77.   shift(0x02, 0xff);
  78.   shift(0x03, 0xff);
  79.   shift(0x04, 0xff);
  80.   delay(100); //Small delay
  81. }
  82.  
  83. void loop() {
  84.   //This loop will execute each Delay=1000ms, so 1 second
  85.   unsigned long currentMillis = millis();
  86.   if(currentMillis - previousMillis >= Delay)
  87.   {
  88.     previousMillis += Delay;          
  89.     time_str = rtc.getTimeStr();      //First,we get the real time, hour, minute, second
  90.     hr_1_str += (char)time_str[0];    //We separate the first digit hour value
  91.     hr_1 = hr_1_str.toInt();          //Pass the hour value  String to int format
  92.     hr_2_str += (char)time_str[1];    //We separate the second digit hour value
  93.     hr_2 = hr_2_str.toInt();          //Pass the hour value  String to int format
  94.     min_1_str += (char)time_str[3];   //We separate the first digit minute value
  95.     min_1 = min_1_str.toInt();        //Pass the minute value  String to int format
  96.     min_2_str += (char)time_str[4];   //We separate the second digit minute value
  97.     min_2 = min_2_str.toInt();        //Pass the minute value  String to int format
  98.     LED_state = !LED_state;           //Invert the blinking LED state each loop, so each 1 second.
  99.     digitalWrite(LED,LED_state);      //Turn the LEDs on or off
  100.     if(prev_time_str != time_str)     //If the time is not the same, we print the new value to the 7-seg display
  101.     {
  102.       print_time_to_7_seg(time_str);
  103.     }
  104.     prev_time_str = time_str;         //Save the last time value
  105.    }//end of timer
  106.  
  107.     hr_1_str = "";                    //Reset the digits String valuew for hours and minutes
  108.     hr_2_str = "";
  109.     min_1_str = "";
  110.     min_2_str = "";
  111.  
  112.    if(!digitalRead(HOUR))             //If the hour button is pressed, we increase hour by one
  113.    {
  114.      set_hour = hr_1*10+hr_2;         //get total hour value in int format
  115.      set_minute = min_1*10+min_2;     //get total minuter value in int forma
  116.      set_hour = set_hour + 1;         //Increase hour by 1
  117.      if(set_hour == 24)               //If we get to hour 24, we start  0
  118.      {
  119.        set_hour = 0;
  120.      }
  121.      rtc.setTime(set_hour, set_minute, 0);     // Write the new time to the RTC module
  122.      //delay(50);
  123.      time_str = rtc.getTimeStr();
  124.      print_time_to_7_seg(time_str);            //Print the new time value to the 7-seg dispaly
  125.    }
  126.  
  127.     //We do the same for the minute push button
  128.    if(!digitalRead(MINUTE))
  129.    {
  130.      set_hour = hr_1*10+hr_2;
  131.      set_minute = min_1*10+min_2;
  132.      set_minute = set_minute + 1;
  133.      if(set_minute == 60)
  134.      {
  135.        set_minute = 1;
  136.      }
  137.      rtc.setTime(set_hour, set_minute, 0);     // Set the time to 12:00:00 (24hr format)
  138.      //delay(50);
  139.      time_str = rtc.getTimeStr();
  140.      print_time_to_7_seg(time_str);
  141.    }
  142. }//end of void loop
  143.  
  144.  
  145. //This function will shift the numbers to the MAX7219 driver
  146. void print_time_to_7_seg(String the_time)
  147. {
  148.  
  149.   if(hr_1 == 0)
  150.   {
  151.     shift(0x01, 0);
  152.   }
  153.   if(hr_1 == 1)
  154.   {
  155.     shift(0x01, 1);
  156.   }
  157.   if(hr_1 == 2)
  158.   {
  159.     shift(0x01, 2);
  160.   }
  161.   if(hr_1 == 3)
  162.   {
  163.     shift(0x01, 3);
  164.   }
  165.   if(hr_1 == 4)
  166.   {
  167.     shift(0x01, 4);
  168.   }
  169.   if(hr_1== 5)
  170.   {
  171.     shift(0x01, 5);
  172.   }
  173.   if(hr_1 == 6)
  174.   {
  175.     shift(0x01, 6);
  176.   }
  177.   if(hr_1 == 7)
  178.   {
  179.     shift(0x01, 7);
  180.   }
  181.   if(hr_1 == 8)
  182.   {
  183.     shift(0x01, 8);
  184.   }
  185.   if(hr_1 == 9)
  186.   {
  187.     shift(0x01, 9);
  188.   }/////////////////////////////////////end of first digit for hour  
  189.  
  190.  
  191.   if(hr_2 == 0)
  192.   {
  193.     shift(0x02, 0);
  194.   }
  195.   if(hr_2== 1)
  196.   {
  197.     shift(0x02, 1);
  198.   }
  199.   if(hr_2 == 2)
  200.   {
  201.     shift(0x02, 2);
  202.   }
  203.   if(hr_2 == 3)
  204.   {
  205.     shift(0x02, 3);
  206.   }
  207.   if(hr_2 == 4)
  208.   {
  209.     shift(0x02, 4);
  210.   }
  211.   if(hr_2 == 5)
  212.   {
  213.     shift(0x02, 5);
  214.   }
  215.   if(hr_2 == 6)
  216.   {
  217.     shift(0x02, 6);
  218.   }
  219.   if(hr_2 == 7)
  220.   {
  221.     shift(0x02, 7);
  222.   }
  223.   if(hr_2 == 8)
  224.   {
  225.     shift(0x02, 8);
  226.   }
  227.   if(hr_2 == 9)
  228.   {
  229.     shift(0x02, 9);
  230.   }/////////////////////////////////////end of second digit for hour
  231.    
  232.  
  233.   if(min_1 == 0)
  234.   {
  235.     shift(0x03, 0);
  236.   }
  237.   if(min_1 == 1)
  238.   {
  239.     shift(0x03, 1);
  240.   }
  241.   if(min_1 == 2)
  242.   {
  243.     shift(0x03, 2);
  244.   }
  245.   if(min_1 == 3)
  246.   {
  247.     shift(0x03, 3);
  248.   }
  249.   if(min_1 == 4)
  250.   {
  251.     shift(0x03, 4);
  252.   }
  253.   if(min_1== 5)
  254.   {
  255.     shift(0x03, 5);
  256.   }
  257.   if(min_1 == 6)
  258.   {
  259.     shift(0x03, 6);
  260.   }
  261.   if(min_1 == 7)
  262.   {
  263.     shift(0x03, 7);
  264.   }
  265.   if(min_1 == 8)
  266.   {
  267.     shift(0x03, 8);
  268.   }
  269.   if(min_1 == 9)
  270.   {
  271.     shift(0x03, 9);
  272.   }/////////////////////////////////////end of first digit for minute
  273.  
  274.  
  275.   if(min_2 == 0)
  276.   {
  277.     shift(0x04, 0);
  278.   }
  279.   if(min_2== 1)
  280.   {
  281.     shift(0x04, 1);
  282.   }
  283.   if(min_2 == 2)
  284.   {
  285.     shift(0x04, 2);
  286.   }
  287.   if(min_2 == 3)
  288.   {
  289.     shift(0x04, 3);
  290.   }
  291.   if(min_2 == 4)
  292.   {
  293.     shift(0x04, 4);
  294.   }
  295.   if(min_2 == 5)
  296.   {
  297.     shift(0x04, 5);
  298.   }
  299.   if(min_2 == 6)
  300.   {
  301.     shift(0x04, 6);
  302.   }
  303.   if(min_2 == 7)
  304.   {
  305.     shift(0x04, 7);
  306.   }
  307.   if(min_2 == 8)
  308.   {
  309.     shift(0x04, 8);
  310.   }
  311.   if(min_2 == 9)
  312.   {
  313.     shift(0x04, 9);
  314.   }/////////////////////////////////////end of first digit for minute
  315.  
  316. }
(#) KoblogPerGyok válasza jointsilver36 hozzászólására (») Aug 4, 2020 /
 
Helló!

A kért DS3213 lib-et a megfelelő helyre tetted, kicsomagolva?
(#) cua válasza jointsilver36 hozzászólására (») Aug 4, 2020 /
 
A kodban ezt irod:
  1. DS3231  rtc(SDA, SCL);

de ilyet nem talal a fordito:
  1. sketch_aug04c:11: error: no matching function for call to 'DS3231:: DS3231(const uint8_t&, const uint8_t&)'

tehat a header file (es a lib) valoszinu nem az ami neked kell.
A forditod ezt hasznalja:
  1. C:\Users\jointsilver\Documents\Arduino\libraries\DS3231/DS3231.h

A tied amit letoltottel, az hol van?
(#) Massawa hozzászólása Aug 4, 2020 /
 
Egy érdekes szerkezetet találtam kezdöknek meg haladoknak. Ráadásul a készülék Litvániábol származik, igy könnyebb és olcsobb is hozzájutni, mint az amerikai kollégának:

Totem

A szerkezet sok mindent tud alapbol és nyilván fejleszteni is lehet.

A képen az ebay kinálata kb 1/3a az amerikai film árához képest.

IMG_4770.PNG
    
(#) Massawa válasza Massawa hozzászólására (») Aug 4, 2020 /
 
Szeptembertöl a komplet verzio is ujra szállithato:
Totem Mini Lab
(#) szili83 válasza Massawa hozzászólására (») Aug 4, 2020 /
 
Ez mire jó?
(#) Massawa válasza szili83 hozzászólására (») Aug 4, 2020 /
 
Rengeteg mindenre. Nézd meg a videot meg a leirást. Kész volt meg áaramm´erö, frenkvencia mérö stb van rajte egy sereg interfacszel meg tápegységgel ( akár programozhatoan is) szoval sok mindenre amivel egy Arduino programozo napirenden dolgozhat. A táp elég motorok hajtására is (1,5 A-ig ). Ezt ilyen röviden nem is lehet leirni.
(#) jointsilver36 válasza cua hozzászólására (») Aug 5, 2020 /
 
OK. Működik
(#) cua válasza jointsilver36 hozzászólására (») Aug 5, 2020 /
 
Awesome.
Gondolom elsore az arduino ide sajat, beepitett library manager-et hasznaltad.
Annak van ilyen konstruktora :
DS3231-lm-default
  1. // Eric's original code is everything below this line
  2. class DS3231 {
  3.         public:
  4.                 //Constructor
  5.                 DS3231();
  6.                 // Time-retrieval functions
(#) MATA hozzászólása Aug 6, 2020 /
 
Üdv mesterek!
Ez a kód egy lítium kapacitásmérőé az a gond vele hogy az idő számláló sokkal lassabban számol mint a valóságban megy az idő 1 perc alatt 16 másodpercet késik és így nem jó a végén kihozott kapacitás érték sem. Kérdésem lehetne e ezzel kezdeni valamit hogy pontosabban számláljon az óra?
Köszönöm!
Itt van a Arduino kód
  1. //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  2. // ARDUINO BATTERY CAPACITY TESTER
  3. //Version-2.0
  4. //by deba168,INDIA // The code is taken from Hesam Moshiri ( https://www.pcbway.com/blog/technology/Battery_capacity_measurement...o.html )
  5. //Dated : 20/10/2019
  6. //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  7.  
  8. #include<JC_Button.h>
  9. #include <Adafruit_SSD1306.h>
  10.  
  11. #define SCREEN_WIDTH 128 // OLED display width, in pixels
  12. #define SCREEN_HEIGHT 64 // OLED display height, in pixels
  13.  
  14. // Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
  15. #define OLED_RESET     4 // Reset pin # (or -1 if sharing Arduino reset pin)
  16. Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
  17.  
  18.  
  19. const float Low_BAT_level = 3.0;
  20. //Current steps with a 3R load (R7)
  21. const int Current [] = {0,110,210,300,390,490,580,680,770,870,960,1000};
  22. const byte PWM_Pin = 10;
  23. const byte Buzzer = 9;
  24. const int BAT_Pin = A0;
  25. int PWM_Value = 0;
  26. unsigned long Capacity = 0;
  27. int ADC_Value = 0;
  28. float Vcc = 4.96 ; // Voltage of Arduino 5V pin ( Mesured by Multimeter )
  29. float BAT_Voltage = 0;
  30. float sample =0;
  31. byte Hour = 0, Minute = 0, Second = 0;
  32. bool calc = false, Done = false;
  33. Button UP_Button(2, 25, false, true);
  34. Button Down_Button(3, 25, false, true);
  35.  
  36.  
  37. void setup () {
  38. //
  39. Serial.begin(9600);
  40. pinMode(PWM_Pin, OUTPUT);
  41. pinMode(Buzzer, OUTPUT);
  42. analogWrite(PWM_Pin, PWM_Value);
  43. UP_Button.begin();
  44. Down_Button.begin();
  45. display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  46. display.clearDisplay();
  47. display.setTextColor(WHITE);
  48. display.setTextSize(1);
  49. display.setCursor(12,25);
  50. display.print("Open Green Energy");
  51. display.display();  
  52. delay(3000);
  53. display.clearDisplay();
  54. display.setTextSize(2);
  55. display.setCursor(2,15);
  56. display.print("Adj Curr:");
  57. display.setCursor(2,40);
  58. display.print("UP/Down:");
  59. display.print("0");
  60. display.display();  
  61. }
  62.  
  63. //************************* End of Setup function *******************************
  64.  
  65. void loop() {
  66.   UP_Button.read();
  67.   Down_Button.read();
  68. if (UP_Button.wasReleased() && PWM_Value < 55 && calc == false)
  69.  {
  70.   PWM_Value = PWM_Value + 5;
  71.   analogWrite(PWM_Pin,PWM_Value);
  72.  
  73.  
  74.  
  75.   display.clearDisplay();
  76.   display.setCursor(2,25);
  77.   display.print("Curr:");  
  78.   display.print(String(Current[PWM_Value / 5])+"mA");
  79.   display.display();  
  80. //  Serial.println(String(Current[PWM_Value / 5]));
  81.  }
  82. if (Down_Button.wasReleased() && PWM_Value > 1 && calc == false)
  83. {
  84.   PWM_Value = PWM_Value - 5;
  85.   analogWrite(PWM_Pin,PWM_Value);
  86.   display.clearDisplay();
  87.   display.setCursor(2,25);
  88.   display.print("Curr:");  
  89.   display.print(String(Current[PWM_Value / 5])+"mA");
  90.   display.display();  
  91.  // Serial.println(String(Current[PWM_Value / 5]) + "mA");
  92.  
  93. }
  94.  
  95. if (UP_Button.pressedFor (1000) && calc == false)
  96. {
  97.   digitalWrite(Buzzer, HIGH);
  98.   delay(100);
  99.   digitalWrite(Buzzer, LOW);
  100.   display.clearDisplay();
  101.   timerInterrupt();
  102.    
  103.   }
  104. }
  105.  
  106. //************************* End of Loop function *******************************
  107.  
  108. void timerInterrupt(){
  109.   calc = true;
  110.   while (Done == false)  {
  111.      Second ++;
  112.     if (Second == 60)  {
  113.       Second = 0;
  114.       Minute ++;      
  115.     }
  116.     if (Minute == 60)  {
  117.       Minute = 0;
  118.       Hour ++;
  119.     }
  120.  
  121.  //************ Measuring Battery Voltage ***********
  122.  
  123.   for(int i=0;i< 100;i++)
  124.   {
  125.    sample=sample+analogRead(BAT_Pin); //read the Battery voltage
  126.    delay (2);
  127.   }
  128.   sample=sample/100;
  129.   BAT_Voltage = sample * Vcc/ 1024.0;
  130.  
  131.   //*********************************************
  132.  
  133.     display.clearDisplay();
  134.     display.setTextSize(2);
  135.     display.setCursor(20,5);
  136.     display.print(String(Hour) + ":" + String(Minute) + ":" + String(Second));
  137.  
  138.     display.setTextSize(1);
  139.     display.setCursor(0,25);
  140.     display.print("Disch Curr: ");  
  141.     display.print(String(Current[PWM_Value / 5])+"mA");
  142.      
  143.    
  144.     display.setCursor(2,40);  
  145.     display.print("Bat Volt:" + String(BAT_Voltage)+"V" );
  146.  
  147.  
  148.  
  149.     Capacity =  (Hour * 3600) + (Minute * 60) + Second;
  150.     Capacity = (Capacity * Current[PWM_Value / 5]) / 3600;
  151.     display.setCursor(2, 55);
  152.     display.print("Capacity:" + String(Capacity) + "mAh");
  153.     display.display();
  154.  
  155.    
  156.     if (BAT_Voltage < Low_BAT_level)
  157.     {
  158.       Capacity =  (Hour * 3600) + (Minute * 60) + Second;
  159.       Capacity = (Capacity * Current[PWM_Value / 5]) / 3600;
  160.       display.clearDisplay();
  161.       display.setTextSize(2);      
  162.       display.setCursor(2,15);    
  163.       display.print("Capacity:");
  164.       display.setCursor(2,40);  
  165.       display.print(String(Capacity) + "mAh");
  166.       display.display();
  167.       Done = true;
  168.       PWM_Value = 0;
  169.       analogWrite(PWM_Pin, PWM_Value);
  170.       digitalWrite(Buzzer, HIGH);
  171.       delay(100);
  172.       digitalWrite(Buzzer, LOW);
  173.       delay(100);
  174.       digitalWrite(Buzzer, HIGH);
  175.       delay(100);
  176.       digitalWrite(Buzzer, LOW);
  177.       delay(100);
  178.     }
  179.        delay(1000);
  180.   }
  181.    
  182. }
(#) mateatek válasza MATA hozzászólására (») Aug 6, 2020 /
 
Időmérésre a millis() függvényt használja. A timer0 szolgáltatja neki a jelet, ami pedig 976.5 hertzen jár, nem 1000 hertzen. Igaz, ez nem okozhat percenként 16 másodperc késést, hanem 11 percenként.
A 158. sorban számolgatja ki az időből a kapacitást. Ott korrigáljad.
De engem az jobban zavar, hogy a sample változó a mérés előtt nincsen kinullázva. Na, ez hazavágja az egészet.
(#) MATA válasza mateatek hozzászólására (») Aug 6, 2020 /
 
Köszi a gyors választ az hogy a sample változó mérés előtt nincs kinullázva az milyen problémát okoz?
(#) mateatek válasza MATA hozzászólására (») Aug 6, 2020 /
 
Mindig benne marad az utolsó mérés eredménye. Ehhez hozzáadódik a 100 mérés, majd az érték el lesz osztva 100-zal. Tehát nagyobb értéket kapsz végeredménynek, mint a valós és ez az eredmény minden mérésnél rosszabb lesz. Nullázzad mérés előtt.
(#) KoblogPerGyok válasza mateatek hozzászólására (») Aug 6, 2020 / 1
 
Illetve az interrupton lévő függvényben:

delay(1000);

A sok delay(100); után.

Szerintem mindent vissza kellene vezetni milis()/micros() mérésekre, mármint ekkor nem pontosan 1 sec lesz, de akkor pontosabb értéket lehetne számolni szerintem. De ahhoz át kellene írni pár dolgot.
(#) Kovidivi válasza mateatek hozzászólására (») Aug 6, 2020 /
 
"976.5 hertzen" - az eredeti Arduino-s millis() függvény elég korrekten van megírva, figyelembe vesz minden hibát, és ezeket korrigálja is. Ami gondot okozhat, az egyedül az, ha a 16MHz-es kristály értéke más, vagy nem 16MHz-en ketyeg, vagy ha a fuse bitek-nél a "divide8" be van kalcsolva, de akkor 80mp alatt csak 10mp-ig számolna a műszer.
A hozzászólás módosítva: Aug 6, 2020
(#) MATA hozzászólása Aug 6, 2020 /
 
Köszönöm mindenkinek hogy foglalkozik a problémámmal itt a számolásba kell akkor bele szólni és annak függvényében változtatni hogy mennyi az eltérés a valós idő és az Arduino által számlált idő közt. Itt a kapacitás érték a lényeg.
(#) MATA hozzászólása Aug 6, 2020 /
 
Igen van hiba a programban is többek közt az PWM-et csak akkor kellene indítani amikor hosszú gombnyomással bekapcsoljuk a mérést de itt az van hogy mikor állítjuk az áramot akkor már folyik is mindjárt ha rajt van az akku.
(#) MATA hozzászólása Aug 6, 2020 /
 
Egyébként itt van a szerkezet ha valakit érdekel.
https://www.youtube.com/watch?v=tFIXgx0lwCY
(#) Kovidivi válasza MATA hozzászólására (») Aug 6, 2020 /
 
Nem rossz! Az áram értéket azért ellenőrizd, mert a sönt ellenállás értéke sem pontos, és a műveleti erősítőnek is van offsetje. A programban tudod kalibrálni (gondolom). A program még kiforratlan, de talán lesz később fejlesztve.
Következő: »»   645 / 847
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