Fórum témák
- • Klíma beszerelése, fűtés-hűtés házilag
- • Elfogadnám, ha ingyen elvihető
- • Keltető tojásforgató
- • Elektromos távirányítós kapunyitó
- • Crystal radio - detektoros rádió
- • Kombikazán működési hiba
- • Biciklilámpa / bringalámpa
- • Léptetőmotorok (vezérlése)
- • DSC riasztó
- • Codefon kaputelefon
- • Elektromos gyerekautò
- • Szivattyú (vízszint) vezérlés javítás
- • Villanyszerelés
- • Felajánlás, azaz ingyen elvihető
- • Vicces - mókás történetek
- • Erősítő mindig és mindig
- • Opel Astra elektromos hibák
- • GPS GSM modulok programozása
- • Kazettás magnó (deck) javítása
- • Érdekességek
- • Villanymotor bekötése
- • MIG/MAG/Co2 hegesztő készülékek házilag
- • Bojler javítása, kérdések
- • Redőny vezérlés
- • Kvarcoszcillátor
- • Rendezvény-hangosítás (PA) hangtechnikái
- • LCD TV probléma
- • Szárítógép problémák
- • Számítógép hiba, de mi a probléma?
- • Rendelés külföldről (eBay - Paypal)
- • Digitális labortápegység
- • Varrógép elektronika
- • Műhelyünk felszerelése, szerszámai
- • Túlfeszültségvédő
- • 555-ös IC-s kapcsolások
- • Labortápegység készítése
- • Hangsugárzó építés, javítás - miértek, hogyanok
- • Autóelektronika
- • Plexi megmunkálása
- • Androidos okos telefonok
- • Beninca ECO-2 kétmotoros kapunyitó vezérlés
- • EAGLE NYÁK tervező
- • Li-Po - Li-ion akkumulátor és töltője
- • Fényorgona
- • TV hiba, mi a megoldás?
- • LCD monitor probléma
- • Kávéfőzőgép hiba
- • LED-es index
- • Transzformátor készítés, méretezés
- • Autó-generátor nem tölt rendesen
- • LED-es lámpa 230 V ról
- • Westen 240 Fi gázkazán hiba
- • Házilag építhető fémkereső
- • Elektronikai témájú könyvek újságok
- • IMI villanymotor
» Több friss téma
|
A klónok CH340 Soros-USB illesztőjének drivere ( Letöltés)
Ne nekem mondjad! Idézet: „én lm35-ös tranzisztort használtam.” Ennyi.
Azt már észre vettem, hogy az Arduino-t könnyített C++ nyelven lehet programozni és .ino kiterjesztésű fájlok lesznek a programkódok. Viszont ha pl. építek egy égetőt, felprogramozom Arduino-val, akkor azzal az égetővel lehet majd síma C nyelven programozni pl. egy Attiny-t?
Jó, akkor mindjárt leírom az érintettnek is, vagy látja amit írtam. Nem kell mindjárt felkapni a vizet...
vilmosd kedvéért konkrétan neked is leírom, az LM35 egy analóg hőmérő.
Az AVR-ek csak a lefordított programkóddal (HEX) boldogulnak. Amennyiben van egy olyan fordítód, ami lefordítja a "sima C"-t HEX-re, és van egy égető szoftvered, akkor már kész is vagy. Jó ha a két funkció egy szoftverben egyesül (mint pl. az Arduino esetében), de nem feltétlenül szükséges.
A MOSFET elé nem kell ellenállás, mert feszültség vezérelt alkatrész, egyébként olyan 10 ohm-ot szoktak ha nagy frekin járatják a GATE -el sorosan. Valamint, hogy ha bármi baj lenne, akkor a GATE és a SOURCE elektródája közé mondjuk 10k ellenállást, ami lehúzza földre az N csatornás FET-et. De ha ezeket kihagyod és közvetlenül a kontrollerre kötöd, az se baj, csak számolj azzal, hogy bootoláskor lebeg a kimenet, és a MOSFET kinyithat. Tehát célszerű betenni azt a 10k ellenállást legalább.
Régebben szórakoztam vele, próbáld ki mit csinál, csak írd át a te LCD kijelződ bekötésére. Nálam az analóg porton volt a kijelző, mert ott volt neki hely.
// define integers for the cursor location
int x = 0;
int y = 0;
int j = 0;
#include <LiquidCrystal.h>
LiquidCrystal lcd(A11,A10,A9,A5,A4,A3,A2);
const int gnd = A14;
const int vdd = A13;
const int cont = A12;
const int back_A = A1;
const int back_C = A0;
void setup() {
pinMode(A6, INPUT);
pinMode(A7, INPUT);
pinMode(A8, INPUT);
pinMode(gnd, OUTPUT);
pinMode(vdd, OUTPUT);
pinMode(cont, OUTPUT);
pinMode(back_A, OUTPUT);
pinMode(back_C, OUTPUT);
digitalWrite(gnd, LOW);
digitalWrite(vdd, HIGH);
digitalWrite(cont, LOW);
digitalWrite(back_A, HIGH);
digitalWrite(back_C, LOW);
delay(1000);
lcd.begin(16, 2);
lcd.print("CUSTOM CHAR SP");
// " "
delay(1000);
}
void customclear()
{
// ensures all custom character slots are clear before new custom
// characters can be defined.
byte blank[8] =
{
B00000, B00000, B00000, B00000, B00000, B00000, B00000, B00000
};
for(int i = 0; i < 8; i++)
{
lcd.createChar(i, blank);
}
}
// filles a segment one line at a time fron left to right.
void customset1()
{
customclear();
j = 4;
// arrays to form one set of custom characters
byte line1[8] =
{
B10000, B10000, B10000, B10000, B10000, B10000, B10000, B10000
};
byte line2[8] =
{
B11000, B11000, B11000, B11000, B11000, B11000, B11000, B11000
};
byte line3[8] =
{
B11100, B11100, B11100, B11100, B11100, B11100, B11100, B11100
};
byte line4[8] =
{
B11110, B11110, B11110, B11110, B11110, B11110, B11110, B11110
};
// assignes each segment a write number
lcd.createChar(0, line1);
lcd.createChar(1, line2);
lcd.createChar(2, line3);
lcd.createChar(3, line4);
}
// fills a segment one line at a time from top to bottom.
void customset2()
{
customclear();
j = 7;
// arrays to form one set of custom characters
byte line1[8] =
{
B11111, B00000, B00000, B00000, B00000, B00000, B00000, B00000
};
byte line2[8] =
{
B11111, B11111, B00000, B00000, B00000, B00000, B00000, B00000
};
byte line3[8] =
{
B11111, B11111, B11111, B00000, B00000, B00000, B00000, B00000
};
byte line4[8] =
{
B11111, B11111, B11111, B11111, B00000, B00000, B00000, B00000
};
byte line5[8] =
{
B11111, B11111, B11111, B11111, B11111, B00000, B00000, B00000
};
byte line6[8] =
{
B11111, B11111, B11111, B11111, B11111, B11111, B00000, B00000
};
byte line7[8] =
{
B11111, B11111, B11111, B11111, B11111, B11111, B11111, B00000
};
// assignes each segment a write number
lcd.createChar(0, line1);
lcd.createChar(1, line2);
lcd.createChar(2, line3);
lcd.createChar(3, line4);
lcd.createChar(4, line5);
lcd.createChar(5, line6);
lcd.createChar(6, line7);
}
void mediaChar()
{
customclear();
byte play[8] =
{
B00000, B01000, B01100, B01110, B01100, B01000, B00000, B00000
};
byte fastforward[8] =
{
B00000, B10100, B01010, B00101, B01010, B10100, B00000, B00000
};
byte forward[8] =
{
B00000, B01000, B00100, B00010, B00100, B01000, B00000, B00000
};
byte fastback[8] =
{
B00000, B00101, B01010, B10100, B01010, B00101, B00000, B00000
};
byte back[8] =
{
B00000, B00010, B00100, B01000, B00100, B00010, B00000, B00000
};
byte Stop[8] =
{
B00000, B11111, B11111, B11111, B11111, B11111, B00000, B00000
};
byte record[8] =
{
B00000, B01110, B11111, B11111, B11111, B01110, B00000, B00000
};
byte pause[8] =
{
B00000, B11011, B11011, B11011, B11011, B11011, B00000, B00000
};
// assignes each segment a write number
lcd.createChar(2, play);
lcd.createChar(4, fastforward);
lcd.createChar(3, forward);
lcd.createChar(0, fastback);
lcd.createChar(1, back);
lcd.createChar(6, Stop);
lcd.createChar(7, record);
lcd.createChar(5, pause);
}
void cardChar()
{
customclear();
byte heart[8] =
{
B00000, B01010, B11111, B11111, B01110, B00100, B00000, B00000
};
byte diamond[8] =
{
B00000, B00100, B01110, B11111, B01110, B00100, B00000, B00000
};
byte spade[8] =
{
B00000, B00100, B01110, B11111, B11111, B01110, B00100, B01110
};
byte club[8] =
{
B00000, B01110, B10101, B11111, B10101, B00100, B01110, B00000
};
// assignes each segment a write number
lcd.createChar(0, heart);
lcd.createChar(1, diamond);
lcd.createChar(2, spade);
lcd.createChar(3, club);
}
void boarderChar()
{
customclear();
byte topleft[8] =
{
B11111, B10000, B10000, B10000, B10000, B10000, B10000, B10000
};
byte topright[8] =
{
B11111, B00001, B00001, B00001, B00001, B00001, B00001, B00001
};
byte bottomleft[8] =
{
B10000, B10000, B10000, B10000, B10000, B10000, B10000, B11111
};
byte bottomright[8] =
{
B00001, B00001, B00001, B00001, B00001, B00001, B00001, B11111
};
byte leftside[8] =
{
B10000, B10000, B10000, B10000, B10000, B10000, B10000, B10000
};
byte rightside[8] =
{
B00001, B00001, B00001, B00001, B00001, B00001, B00001, B00001
};
byte top[8] =
{
B11111, B00000, B00000, B00000, B00000, B00000, B00000, B00000
};
byte bottom[8] =
{
B00000, B00000, B00000, B00000, B00000, B00000, B00000, B11111
};
// assignes each segment a write number
lcd.createChar(0, topleft);
lcd.createChar(1, topright);
lcd.createChar(2, bottomleft);
lcd.createChar(3, bottomright);
lcd.createChar(4, leftside);
lcd.createChar(5, rightside);
lcd.createChar(6, top);
lcd.createChar(7, bottom);
}
void arrowChar()
{
customclear();
byte up[8] =
{
B00000, B00100, B01110, B10101, B00100, B00100, B00100, B00000
};
byte down[8] =
{
B00000, B00100, B00100, B00100, B10101, B01110, B00100, B00000
};
byte lowleftcorner[8] =
{
B00000, B00000, B00001, B10010, B10100, B11000, B11110, B00000,
};
byte lowrightcorner[8] =
{
B00000, B00000, B10000, B01001, B00101, B00011, B01111, B00000,
};
byte upleftcorner[8] =
{
B00000, B11110, B11000, B10100, B10010, B00001, B00000, B00000
};
byte uprightcorner[8] =
{
B00000, B01111, B00011, B00101, B01001, B10000, B00000, B00000
};
byte updown[8] =
{
B00100, B01110, B10101, B00100, B00100, B10101, B01110, B00100
};
// assignes each segment a write number
lcd.createChar(0, up);
lcd.createChar(1, down);
lcd.createChar(2, lowleftcorner);
lcd.createChar(3, lowrightcorner);
lcd.createChar(4, upleftcorner);
lcd.createChar(5, uprightcorner);
lcd.createChar(6, updown);
}
void fillset()
{
for(int i = 0; i < j; i++)
{
lcd.setCursor(x, y);
lcd.write(i);
delay(10);
}
lcd.setCursor(x, y);
lcd.write(255);
delay(10);
x++;
if(x < 16)
{
fillset();
}
if(x > 15)
{
x = 0;
y++;
if (y < 2)
{
fillset();
}
}
if(y > 1)
{
x = 0;
y = 0;
lcd.clear();
}
}
void loop()
{
customset1();
fillset();
customset2();
fillset();
customclear();
for(int i = 0; i <8; i++)
{
lcd.setCursor(x,y);
lcd.write(i);
x++;
}
x=0;
mediaChar();
delay(1000);
cardChar();
delay(1000);
arrowChar();
delay(1000);
lcd.clear();
boarderChar();
lcd.setCursor(0,0);
lcd.write((uint8_t)0);
lcd.setCursor(0,1);
lcd.write(2);
lcd.setCursor(15,0);
lcd.write(1);
lcd.setCursor(15,1);
lcd.write(3);
lcd.setCursor(6,0);
lcd.write((uint8_t)0);
lcd.setCursor(9,0);
lcd.write(1);
lcd.setCursor(6,1);
lcd.write(2);
lcd.setCursor(9,1);
lcd.write(3);
lcd.setCursor(7,0);
lcd.write(6);
lcd.write(6);
lcd.setCursor(7,1);
lcd.write(7);
lcd.write(7);
delay(1000);
x=0;
lcd.clear();
}
Üdv,
Egy arduinoval megvalósított PID vezérlést szeretnék elkészíteni. A projektben használt eszközök DC motor(12V), propeller, gyorsulásmérő szenzor. Rajz a szerkezetről. A lényeg az lenne, hogy a PID algoritmus egyensúlyban tartsa a mérleget, azáltal, hogy mindig a megfelelő kitöltési tényezőjű PWM jelet küldi a motornak. A szenzor x tengelyre vonatkozó érzékelője -16 000 (90°balra) től +16 000 (90°jobbra) ig szolgáltat digitális jelet a mikrovezérlőnek. Mikor vízszintest érzékel a szenzor akkor az érték 0.
A beállítások tehát:
Setpoint: 0
Input: szenzor jele
Outpu: Motor PWM jelének kitöltési tényezője
A programhoz az arduino PID könyvtárát használom. A program kb. így fog kinézni:
1. #include <PID_v1.h>
2.
3. //változók deklarálása
4. double Setpoint, Input, Output, Kp, Ki, Kd;
5. //pid algoritmus konfigurálása
6. PID myPID(&Input, &Output, &Setpoint,Kp,Ki,Kd, DIRECT);
7.
8. void setup()
9. {
10. Input = AcX;
11. Setpoint = 0;
12. //PID funkció bekapcsolása
13. myPID.SetMode(AUTOMATIC);
14. }
15.
16. void loop()
17. {
18. //bemenet folyamatos olvasása
19. Input = AcX;
20. //számítás
21. myPID.Compute();
22. //kimenet írása
23. analogWrite(3,Output);
24. }
A kérdésem az lenne, hogy a Kp, Ki, Kd értékeket hogyan kellene beállítani ? A kimenet 0..255 értékű (ez befolyásolja a kitöltési tényezőt. A mintavételezési idő 200 ms. A hozzászólás módosítva: Nov 5, 2014
Sziasztok! Nemrég vettem egy Arduino Mega 2560 as board-ot. Próbaként réraktam egy sima led villogtató programot. Azóta viszont a softwer nem találja a boardot, vagy ha más gépre dugom rá az látja de nem tudok programot rátölteni mert megszakad timeout ra.
Ha valaki tudja a probléma okát annak előre is köszönöm a segítséget.
A Tools Board alatt igaz a Mega2560 van kiválsztva?
COM port kiválasztás OK?
Melyik keretrendszer, milyen oprendszer (verzióval)?
ENC28J60: 5V tolerant a bemenetei, csak a tápfeszre kell 3.3V
A port menüpont halványal van írva, szóval váasztani se tudok.
Ha a gépre gondoltál azon xp van net 3.5 keretrendszerrel.
Sziasztok! Nem találtam sehol megoldást, így itt kérdezek. Pontosabban ezt a kérdést már '13-ban feltették, azt megtaláltam, de megoldást nem. Ard Mega 2560 board, 1.05ver. software. Shield+TFT_320QVT touch display. Az UTFT.zip-et már többször letöltöttem, elméletileg mindent a helyére bemásoltam. Example & Libraries. Fordításkor a következő hibával áll meg: Idézet: „In file included from UTouch_ButtonTest.ino:13:
C:\Program Files (x86)\Arduino\libraries\UTouch/UTFT.h:162: error: 'bitmapdatatype' has not been declared” Néztem, cseréltem a UTFT.h filet, de semmi változás. Van esetleg valami ötlet, találkozott valaki ilyennel? Köszi: Mike
Soros driver fenn van? Ismeretlen eszköz?
Ha a drivert megmutatod neki?
Arduino keretrendszer verzió?
Idézet: „Van esetleg valami ötlet, találkozott valaki ilyennel?”
Hogyne, Google barátod bizonyára találkozott már vele...
Igen, ezeket már végig zongoráztam....
Bővebben: Link
itt van Bővebben: Link
Én ez alapján indultam el, de mégsem működik.
A meghajtó chip alapján módosítani kell a kódot, neked hátha menni fog, nekem nem ment...
Link javítva.
Használd a link gombot!
-moderátor- A hozzászólás módosítva: Nov 6, 2014
Még egy kérdésem lenne. A hálózati 230v-ot szeretném arduinoval analogRead()-elni. Azt tudom, hogy ha nagyobb mint 5v-ot akarok, akkor ha 2 ellenállást használok, működik, de ide milyen egyenirányító és mekkora értékű ellenállás kéne? (Fontos lenne, hogy ne kelljen táp!)
Szia Aki olyanokat kérdez, hogy tranzisztor elé milyen ellenállást tegyen, meg mi az a FET, az ne méregesse a 230V-ot! Én már szerintem vagy 10éve érdeklödök az elektronika iránt, de ilyen igény, mint a tied, még fel sem merült bennem. Tisztában vagy, hogy amit akarsz, az életveszélyes? Keress más megoldást, vagy írd le a megoldandó feladatot, mihez kell ez egyáltalán?
Szia tisztában vagyok vele, hog életveszélyes. Amihez kell: Az egyik eszköz, amit építek, tartalmazni fog egy szünetmentes táp "részt" is, és így szerném leolvasni, hogy mikor megy el a hálózati áram. De a táp azért nem jó, mert ugye ott kikapcsolás után még marad benne egy kis áram egy ideig, és akkor nem rögtön kapcsol át aksira.
Hello.
Rakj a transzformátor szekunder kivezetésére egy diódát, erre rakj 100kohm-ot elöterhelésnek, ezt pedig mérheted analogread-del. Esetleg rakj utána feszültség osztót. Ha elmegy a 230V, itt sem lesz feszültség, mert kondi sincs, viszont az Arduino tápjában levö kondiban még lesz elég tárolt töltés az átkapcsoláshoz.
A tap szekunder oldalan be kell tenni a greatz es a tapkondi koze egy diodat, es a dioda ele egy optot ( 4N35) Amig van halozat, addid az opto vezet, es 100 Hz-es impulzusokat ad., de amikor a tap elmegy megszunik az impulzus. Ebbol tudhatod hogy nincs tovabb fesz a halozaton. Ez nem eletveszelyes. Esetleg egy kozonseges NPN tranyoval hasonlo eredmenyt erhetsz el,
Szia! De milyen feszültségű legyen a szekunder? És egyenirányítás nem kell?
Szia, Most kezdtem neki megint, amit eddig sikerült képet kiküldeni rá, azt is szerencsésen letöröltem Csak azóta, újra kellett tenni a win-t, habár 1-1 ben lementettem a könyvtárat valami mégsem szuperál, most próbálom, amit küldtél linket. Köszi!
Akármit csinálok: Idézet: „In file included from UTFT_Demo_320x240.ino:13:
C:\Program Files (x86)\Arduino\libraries\UTouch/UTFT.h:162: error: 'bitmapdatatype' has not been declared” ezzel a bitmap-el van gondja. De amit most másoltam be, annak a könyvtárnak UTFT2 nevet adtam, és mégis máshol matat...
A saját felhasználói mappádban tedd be az Arduino/libraries almappába!
Ott van, a 162. sorra írja ki a hibát, a fiam azt írta: Idézet: „ebből hiányzik a bitmapdata osztály” , de hogy miez???
Sziasztok!
Van egy ENC28J60-as ethernet modulom. Addig eljutottam vele, hogy egy weblapot meg tudok vele jeleníteni. Viszont a email küldés nem akar összejönni. Tudtok ebben segíteni? Neten nem nagyon találok erre a modulra példákat, csak az Arduino Ethernet Shield-re.
Sziasztok! Lenne egy fura kérdésem, hogyan lehetne egy char-rel létrehozott változóval azt megcsinálni, hogy ha egy megadott szöveg "benne van", akkor a változó másik fele, a megadott szöveg nélkül átkerüljön egy másik változóba.
pl.: a megadott szöveg: abc és a char1 == abc123, akkor a char2 123 lesz vagy char1== abc456 a char2 456 lesz.
|
|