Fórum témák
- • Felajánlás, azaz ingyen elvihető
- • Akkumulátor töltő
- • Elektronikai témájú könyvek újságok
- • Internetes rádióvevő
- • Rádióamatőrök topikja
- • LED szalag
- • Klíma szervizelés, javítás
- • TDA7294 végerősítő
- • Háromfázisú aggregátor
- • Elfogadnám, ha ingyen elvihető
- • Nagyfeszültségű tápegység
- • Szintetizátor javítás
- • Alternativ HE találkozó(k)
- • Kondenzátor
- • Dobozolási technikák, műszerdobozok
- • Boombox javítás
- • Sütő javítás
- • 3D nyomtatás
- • Erősítő mindig és mindig
- • Arduino
- • Mosógép vezérlők és általános problémáik
- • Számítógép hiba, de mi a probléma?
- • Hangszórójavítás (otthon)
- • Laptop javítás, tuning
- • Elektromos távirányítós kapunyitó
- • Autós erősítős kérdések, problémák
- • Mikrohullámú sütő javítás, magnetron csere, stb.
- • Villanymotor
- • Vegyes barkácsfogások
- • Digitális óra
- • Hűtőgép probléma
- • TV hiba, mi a megoldás?
- • Szünetmentes táp javítása, élesztése
- • Erősítő építése elejétől a végéig
- • Műhelyünk felszerelése, szerszámai
- • Kombikazán működési hiba
- • Függvénygenerátor építése
- • SMD, mi a típusa?
- • Hibrid erősítő
- • Suzuki Swift elektronika
- • Videomagnó problémák
- • Általános antennás kérdések, válaszok
- • Érdekességek
- • STK erősítők javítások
- • DC-DC konverter max. kapacitív terhelése
- • Audiofil, High End Audio
- • Központi fűtés (vezérlés)
- • IMI villanymotor
- • Borhűtő vezérlő panel
- • Androidos okos telefonok
- • Klíma beszerelése, fűtés-hűtés házilag
- • Súlymérés
- • Varrógép elektronika
- • Analóg oszcilloszkóp javítása
- • Videoton EA-7386-s erösítő
» Több friss téma
|
A klónok CH340 Soros-USB illesztőjének drivere ( Letöltés)
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
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.
Ü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!
A Reset lábat általában fel kell húzni a tápfeszültségre.
Az Arduinon?
Nekem GND-re resetel
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).
Igen, a panelon van. Holnap leszedem róla, és újult erővel nekiesek.
Köszönöm a segítséget!
Innen a HE-storeból vettem. Eredeti szerintem is.
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.
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...
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 This report would have more information with
"Show verbose output during compilation"
enabled in File > Preferences.
Arduino: 1.0.6 (Windows 7), Board: "Arduino Nano w/ ATmega328"
sketch_aug04c: 11: error: no matching function for call to 'DS3231:S3231(const uint8_t&, const uint8_t&)'
sketch_aug04c.ino: In function 'void setup()':
sketch_aug04c: 58: error: 'class DS3231' has no member named 'begin'
sketch_aug04c.ino: In function 'void loop()':
sketch_aug04c: 94: error: 'class DS3231' has no member named 'getTimeStr'
sketch_aug04c: 126: error: 'class DS3231' has no member named 'setTime'
sketch_aug04c: 128: error: 'class DS3231' has no member named 'getTimeStr'
sketch_aug04c: 142: error: 'class DS3231' has no member named 'setTime'
sketch_aug04c: 144: error: 'class DS3231' has no member named 'getTimeStr'
Mi lehet a gondja?Köszi a válaszokat.
Ez a kód: /*
Code by: ELECTRONOOBS, 16/10/2018
*/
//We include the DS3231 library for the real time module
//Define the I/O
int LED = 8; //Pin for the two blinking LEDs
//int SET = 5; //Not used any more
int HOUR = 7; //Input for set hour button
int MINUTE = 6; //Input for set minute button
//Other variables for the code
int Delay=1000; //Variable used for the 1 second loop. Each 1s we change the LED state so it will blink
bool LED_state = false; //Here we save the LED state each loop, HIGH or LOW
unsigned long previousMillis = 0; //Variable used to count the 1s loop time
String time_str = ""; //Here we save the time in a string format the ral time module
String prev_time_str = ""; //We save the last time value so we could compare it
String hr_1_str = ""; //We divide the hours and minutes in separate variables first digit for hour
String hr_2_str = ""; //We divide the hours and minutes in separate variables second digit of hour
String min_1_str = ""; //We divide the hours and minutes in separate variables first digit of minute
String min_2_str = ""; //We divide the hours and minutes in separate variables secodn digit of minute
int hr_1 = 0; //first digit for hour
int hr_2 = 0; //second digit for hour
int min_1 = 0; //first digit for minute
int min_2 = 0; //second digit for minute
int set_hour = 0;
int set_minute = 0;
//This function will shift the data to the MAX7219 driver.
void shift(byte send_to_address, byte send_this_data)
{
}
void setup() {
//Serial.begin(9600);
rtc.begin(); //We start the real time module
pinMode (MAX7219_Data_IN, OUTPUT ); //Define the data pin for the MAX7219 as output
pinMode (MAX7219_Chip_, OUTPUT ); //Define the cs pin for the MAX7219 as output
pinMode (MAX7219_Clock, OUTPUT ); //Define the clock pin for the MAX7219 as output
digitalWrite (MAX7219_Chip_, HIGH ); //We set the CS to high, CS is negative enabeled
pinMode(LED,OUTPUT);
//pinMode(SET,INPUT); //Not used any more
pinMode(HOUR,INPUT);
pinMode(MINUTE,INPUT);
//digitalWrite(SET, HIGH); //Not used any more
digitalWrite(HOUR, HIGH);
digitalWrite(MINUTE, HIGH);
digitalWrite(LED,LED_state);
delay(200);
//Setup
shift(0x0f, 0x00); //display test register - test mode off
shift(0x0c, 0x01); //shutdown register - normal operation
shift(0x0b, 0x04); //scan limit register - display digits 0 thru 7
shift(0x0a, 0x01); //intensity register - Min brightness: 0x01, Max brightness: 0x0f
shift(0x09, 0xff); //decode mode register - CodeB decode all digits
shift(0x01, 0xff); //Turn off all segments
shift(0x02, 0xff);
shift(0x03, 0xff);
shift(0x04, 0xff);
delay(100); //Small delay
}
void loop() {
//This loop will execute each Delay=1000ms, so 1 second
unsigned long currentMillis = millis();
if(currentMillis - previousMillis >= Delay)
{
previousMillis += Delay;
time_str = rtc.getTimeStr(); //First,we get the real time, hour, minute, second
hr_1_str += (char)time_str[0]; //We separate the first digit hour value
hr_1 = hr_1_str.toInt(); //Pass the hour value String to int format
hr_2_str += (char)time_str[1]; //We separate the second digit hour value
hr_2 = hr_2_str.toInt(); //Pass the hour value String to int format
min_1_str += (char)time_str[3]; //We separate the first digit minute value
min_1 = min_1_str.toInt(); //Pass the minute value String to int format
min_2_str += (char)time_str[4]; //We separate the second digit minute value
min_2 = min_2_str.toInt(); //Pass the minute value String to int format
LED_state = !LED_state; //Invert the blinking LED state each loop, so each 1 second.
digitalWrite(LED,LED_state); //Turn the LEDs on or off
if(prev_time_str != time_str) //If the time is not the same, we print the new value to the 7-seg display
{
print_time_to_7_seg(time_str);
}
prev_time_str = time_str; //Save the last time value
}//end of timer
hr_1_str = ""; //Reset the digits String valuew for hours and minutes
hr_2_str = "";
min_1_str = "";
min_2_str = "";
if(!digitalRead(HOUR)) //If the hour button is pressed, we increase hour by one
{
set_hour = hr_1*10+hr_2; //get total hour value in int format
set_minute = min_1*10+min_2; //get total minuter value in int forma
set_hour = set_hour + 1; //Increase hour by 1
if(set_hour == 24) //If we get to hour 24, we start 0
{
set_hour = 0;
}
rtc.setTime(set_hour, set_minute, 0); // Write the new time to the RTC module
//delay(50);
time_str = rtc.getTimeStr();
print_time_to_7_seg(time_str); //Print the new time value to the 7-seg dispaly
}
//We do the same for the minute push button
if(!digitalRead(MINUTE))
{
set_hour = hr_1*10+hr_2;
set_minute = min_1*10+min_2;
set_minute = set_minute + 1;
if(set_minute == 60)
{
set_minute = 1;
}
rtc.setTime(set_hour, set_minute, 0); // Set the time to 12:00:00 (24hr format)
//delay(50);
time_str = rtc.getTimeStr();
print_time_to_7_seg(time_str);
}
}//end of void loop
//This function will shift the numbers to the MAX7219 driver
void print_time_to_7_seg(String the_time)
{
if(hr_1 == 0)
{
shift(0x01, 0);
}
if(hr_1 == 1)
{
shift(0x01, 1);
}
if(hr_1 == 2)
{
shift(0x01, 2);
}
if(hr_1 == 3)
{
shift(0x01, 3);
}
if(hr_1 == 4)
{
shift(0x01, 4);
}
if(hr_1== 5)
{
shift(0x01, 5);
}
if(hr_1 == 6)
{
shift(0x01, 6);
}
if(hr_1 == 7)
{
shift(0x01, 7);
}
if(hr_1 == 8)
{
shift(0x01, 8);
}
if(hr_1 == 9)
{
shift(0x01, 9);
}/////////////////////////////////////end of first digit for hour
if(hr_2 == 0)
{
shift(0x02, 0);
}
if(hr_2== 1)
{
shift(0x02, 1);
}
if(hr_2 == 2)
{
shift(0x02, 2);
}
if(hr_2 == 3)
{
shift(0x02, 3);
}
if(hr_2 == 4)
{
shift(0x02, 4);
}
if(hr_2 == 5)
{
shift(0x02, 5);
}
if(hr_2 == 6)
{
shift(0x02, 6);
}
if(hr_2 == 7)
{
shift(0x02, 7);
}
if(hr_2 == 8)
{
shift(0x02, 8);
}
if(hr_2 == 9)
{
shift(0x02, 9);
}/////////////////////////////////////end of second digit for hour
if(min_1 == 0)
{
shift(0x03, 0);
}
if(min_1 == 1)
{
shift(0x03, 1);
}
if(min_1 == 2)
{
shift(0x03, 2);
}
if(min_1 == 3)
{
shift(0x03, 3);
}
if(min_1 == 4)
{
shift(0x03, 4);
}
if(min_1== 5)
{
shift(0x03, 5);
}
if(min_1 == 6)
{
shift(0x03, 6);
}
if(min_1 == 7)
{
shift(0x03, 7);
}
if(min_1 == 8)
{
shift(0x03, 8);
}
if(min_1 == 9)
{
shift(0x03, 9);
}/////////////////////////////////////end of first digit for minute
if(min_2 == 0)
{
shift(0x04, 0);
}
if(min_2== 1)
{
shift(0x04, 1);
}
if(min_2 == 2)
{
shift(0x04, 2);
}
if(min_2 == 3)
{
shift(0x04, 3);
}
if(min_2 == 4)
{
shift(0x04, 4);
}
if(min_2 == 5)
{
shift(0x04, 5);
}
if(min_2 == 6)
{
shift(0x04, 6);
}
if(min_2 == 7)
{
shift(0x04, 7);
}
if(min_2 == 8)
{
shift(0x04, 8);
}
if(min_2 == 9)
{
shift(0x04, 9);
}/////////////////////////////////////end of first digit for minute
}
Helló!
A kért DS3213 lib-et a megfelelő helyre tetted, kicsomagolva?
A kodban ezt irod:
de ilyet nem talal a fordito:
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:
C:\Users\jointsilver\Documents\Arduino\libraries\ DS3231/ DS3231. h
A tied amit letoltottel, az hol van?
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.
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.
OK. Működik
Awesome.
Gondolom elsore az arduino ide sajat, beepitett library manager-et hasznaltad.
Annak van ilyen konstruktora :
DS3231-lm-default
// Eric's original code is everything below this line
public:
//Constructor
// 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 //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
// ARDUINO BATTERY CAPACITY TESTER
//Version-2.0
//Dated : 20/10/2019
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#include<JC_Button.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
#define OLED_RESET 4 // Reset pin # (or -1 if sharing Arduino reset pin)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
const float Low_BAT_level = 3.0;
//Current steps with a 3R load (R7)
const int Current [] = {0,110,210,300,390,490,580,680,770,870,960,1000};
const byte PWM_Pin = 10;
const byte Buzzer = 9;
const int BAT_Pin = A0;
int PWM_Value = 0;
unsigned long Capacity = 0;
int ADC_Value = 0;
float Vcc = 4.96 ; // Voltage of Arduino 5V pin ( Mesured by Multimeter )
float BAT_Voltage = 0;
float sample =0;
byte Hour = 0, Minute = 0, Second = 0;
bool calc = false, Done = false;
Button UP_Button(2, 25, false, true);
Button Down_Button(3, 25, false, true);
void setup () {
//
Serial.begin(9600);
pinMode(PWM_Pin, OUTPUT);
pinMode(Buzzer, OUTPUT);
analogWrite(PWM_Pin, PWM_Value);
UP_Button.begin();
Down_Button.begin();
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
display.setTextColor(WHITE);
display.setTextSize(1);
display.setCursor(12,25);
display.print("Open Green Energy");
display.display();
delay(3000);
display.clearDisplay();
display.setTextSize(2);
display.setCursor(2,15);
display.print("Adj Curr:");
display.setCursor(2,40);
display.print("UP/Down:");
display.print("0");
display.display();
}
//************************* End of Setup function *******************************
void loop() {
UP_Button.read();
Down_Button.read();
if (UP_Button.wasReleased() && PWM_Value < 55 && calc == false)
{
PWM_Value = PWM_Value + 5;
analogWrite(PWM_Pin,PWM_Value);
display.clearDisplay();
display.setCursor(2,25);
display.print("Curr:");
display.print(String(Current[PWM_Value / 5])+"mA");
display.display();
// Serial.println(String(Current[PWM_Value / 5]));
}
if (Down_Button.wasReleased() && PWM_Value > 1 && calc == false)
{
PWM_Value = PWM_Value - 5;
analogWrite(PWM_Pin,PWM_Value);
display.clearDisplay();
display.setCursor(2,25);
display.print("Curr:");
display.print(String(Current[PWM_Value / 5])+"mA");
display.display();
// Serial.println(String(Current[PWM_Value / 5]) + "mA");
}
if (UP_Button.pressedFor (1000) && calc == false)
{
digitalWrite(Buzzer, HIGH);
delay(100);
digitalWrite(Buzzer, LOW);
display.clearDisplay();
timerInterrupt();
}
}
//************************* End of Loop function *******************************
void timerInterrupt(){
calc = true;
while (Done == false) {
Second ++;
if (Second == 60) {
Second = 0;
Minute ++;
}
if (Minute == 60) {
Minute = 0;
Hour ++;
}
//************ Measuring Battery Voltage ***********
for(int i=0;i< 100;i++)
{
sample=sample+analogRead(BAT_Pin); //read the Battery voltage
delay (2);
}
sample=sample/100;
BAT_Voltage = sample * Vcc/ 1024.0;
//*********************************************
display.clearDisplay();
display.setTextSize(2);
display.setCursor(20,5);
display.print(String(Hour) + ":" + String(Minute) + ":" + String(Second));
display.setTextSize(1);
display.setCursor(0,25);
display.print("Disch Curr: ");
display.print(String(Current[PWM_Value / 5])+"mA");
display.setCursor(2,40);
display.print("Bat Volt:" + String(BAT_Voltage)+"V" );
Capacity = (Hour * 3600) + (Minute * 60) + Second;
Capacity = (Capacity * Current[PWM_Value / 5]) / 3600;
display.setCursor(2, 55);
display.print("Capacity:" + String(Capacity) + "mAh");
display.display();
if (BAT_Voltage < Low_BAT_level)
{
Capacity = (Hour * 3600) + (Minute * 60) + Second;
Capacity = (Capacity * Current[PWM_Value / 5]) / 3600;
display.clearDisplay();
display.setTextSize(2);
display.setCursor(2,15);
display.print("Capacity:");
display.setCursor(2,40);
display.print(String(Capacity) + "mAh");
display.display();
Done = true;
PWM_Value = 0;
analogWrite(PWM_Pin, PWM_Value);
digitalWrite(Buzzer, HIGH);
delay(100);
digitalWrite(Buzzer, LOW);
delay(100);
digitalWrite(Buzzer, HIGH);
delay(100);
digitalWrite(Buzzer, LOW);
delay(100);
}
delay(1000);
}
}
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.
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?
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.
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.
"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 |
|
/ |
|
|
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.
|
|