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   449 / 839
(#) RoliNyh válasza Bakman hozzászólására (») Máj 25, 2018 /
 
16MHz es a kvarc az UNO -n. Majd meglátom akkor mi lesz.
Ha nem megy, legfeljebb leveszem és arébb lesz a DCDC...
(#) mateatek válasza RoliNyh hozzászólására (») Máj 26, 2018 /
 
Nálam egy 16 MHz-es Atmega2560 mellett 2 darab LM2596-os konverter dolgozik. Az MCU működésében semmi zavart nem tapasztalok. Árnyékolás nincsen semmiféle.
(#) krauszkrisztian hozzászólása Máj 26, 2018 /
 
Hogyan lehet négyszer hét szegmenses kijelzőt vezérelni úgy, hogy ne egyszerre világítson mind a négy számjegy?
(#) vargaf válasza krauszkrisztian hozzászólására (») Máj 26, 2018 /
 
Multiplexelve:
Multiplex hajtásról elméletben
Itt van a válasz a Hobbielektronikán!
(#) icserny válasza krauszkrisztian hozzászólására (») Máj 26, 2018 /
 
A MAX7219 IC akár 8 számjegyet is képes meghajtani és a multiplexelést hardveresen elintézi.
(#) zoz11 hozzászólása Máj 27, 2018 /
 
ÜDv mindenkinek
Van egy egyszerű kódrészlet. azt hogyan tudnám úgy átalakítani, hogy ne egyből reagáljon a potira?
pl ha a poti maxon van, akkor ne írja azt egyből ki a kimenetre, hanem szép lassan fusson fel a kimeneten a feszültség.
  1. rpm = map(analogRead(A5), 0, 1023, 60, 255);
  2.  delay(10)
  3.  analogWrite(ki, rpm);
(#) tbarath válasza zoz11 hozzászólására (») Máj 27, 2018 /
 
Felveszel egy változót és azt "lassan húzod fel".
  1. rpm2 = 0;
  2. while (rpm2 != rpm){
  3.         rpm = map(analogRead(A5), 0, 1023, 60, 255);
  4.         delay(10)
  5.         if (rpm2 > rpm){
  6.                 if ( rpm2 - rpm > 5){
  7.                         rpm2 = rpm +5;}
  8.                 else{
  9.                         rpm2 = rpm;
  10.                 }
  11.         }
  12.         if (rpm > rpm2){
  13.                 if ( rpm - rpm2 > 5){
  14.                         rpm2 = rpm -5;}
  15.                 else{
  16.                         rpm2 = rpm;
  17.                 }
  18.         }
  19.         analogWrite(ki, rpm2);
  20. }

Valahogy így. A kód nem tesztelt, nem futtattam, semmi ilyesmi, remélem érthető hogy mit csináltam. A delay-t (itt 10) és a változás sebességét (itt 5) érdemes konstansként felvenni, így kísérletezéskor elég 1 helyen módosítani
(#) zoz11 válasza tbarath hozzászólására (») Máj 27, 2018 /
 
Köszönöm!
Meg próbáltam de sajna nem működik, a kimenet nem változik semmit, esetleg valami ötlet rá?
(#) tbarath válasza zoz11 hozzászólására (») Máj 27, 2018 /
 
Nyilván elcsesztem, az az ötletem. Amúgy lehet most is, de hátha:
  1. rpm2 = 0;
  2. while (rpm2 != rpm){
  3.         rpm = map(analogRead(A5), 0, 1023, 60, 255);
  4.         delay(10)
  5.         if (rpm2 < rpm){
  6.                 if ( rpm - rpm2 > 5 ){
  7.                         rpm2 = rpm2 +5;}
  8.                 else{
  9.                         rpm2 = rpm;
  10.                 }
  11.         }
  12.         if (rpm2 > rpm){
  13.                 if ( rpm2 - rpm > 5 ){
  14.                         rpm2 = rpm2 -5;}
  15.                 else{
  16.                         rpm2 = rpm;
  17.                 }
  18.         }
  19.         analogWrite(ki, rpm2);
  20. }

Illetve az rpm2=0 az ne a loop-ban legyen, hanem a setup-ban.
(#) Kovidivi válasza zoz11 hozzászólására (») Máj 27, 2018 /
 
Az a baj, hogy a csatolt kódból már magadnak is rá kellene jönnöd, miért nem lesz a kimeneten a megfelelő jel. Ajánlom az Arduino 60 nap alatt c. tanfolyamot! Ha csak megkapod a működő kódot, hogyan fogsz a későbbiekben egyedül programot írni? Nem tanulsz vele semmit.
A hozzászólás módosítva: Máj 27, 2018
(#) zoz11 válasza Kovidivi hozzászólására (») Máj 27, 2018 /
 
Megvan a 60+15napos oktató anyag, most is azt nézegetem éppen. próbálkozok azért, csak akkor írok már ide, mikor már feladtam teljesen, és hátha kapok valami jó irányt.
(#) zoz11 válasza tbarath hozzászólására (») Máj 27, 2018 /
 
Nem jövök rá sajnos a megoldásra :/
(#) nedudgi válasza zoz11 hozzászólására (») Máj 27, 2018 /
 
Lépésenként le kell követni. (Akár papír, ceruza módszrrel.) Ha nem (jól) működik, akkor próbáld meg más módszerrel, a problémát megkerülve. Kezdetben nem az a lényeg, hogy a kódod elegáns legyen, hanem az, hogy működjön.
(#) RoliNyh hozzászólása Máj 28, 2018 /
 
Hellóka!

Van egy ilyen bluetooth modulom, a két szélső láb CLEAR és MCU-INT mire való tudja valaki?
Valamint csak sima kétirányú soros kommunikáció közben szükség lehet/van rá?
Mert eredetileg nem terveztem be az áramkörbe, de valójában még ki sem próbáltam ezt a modult...
A hozzászólás módosítva: Máj 28, 2018
(#) tbarath válasza RoliNyh hozzászólására (») Máj 28, 2018 /
 
Az MCU-INT szerintem a microcontroller felé egy interrupt kimenet, de ez csak tipp.
(#) Bakman válasza RoliNyh hozzászólására (») Máj 28, 2018 / 1
 
Fordíva ülsz a lovon. Előbb próbáld ki, teszteld, aztán tervezz hozzá áramkört. A Clear nagy valószínűséggel Reset bemenet.
(#) zoz11 válasza Kovidivi hozzászólására (») Máj 28, 2018 /
 
MÉg mindig küzdök vele, de elveszítettem a fonalat, pedig próbálom lépésről lépésre kibogozni, úgy néz ki, hogy kezd kifogni rajtam.
próbáltam más megoldást, pl for "utasítással" azzal szépen fel is fut a poti által adott értékig, de ugye az meg mindig újra indul.
(#) Kovidivi válasza zoz11 hozzászólására (») Máj 28, 2018 /
 
Rakj be kilépési feltételt: ha a szépen lassan növelt változód elérkezett a megfelelő értékhez, akkor a ciklisváltozót írd át akkorára, hogy biztosan vége legyen a for-nak: if (poti==ertek) i=1000;
(#) kissi válasza Kovidivi hozzászólására (») Máj 28, 2018 /
 
Erre való a "break" a C szintaktika szerint...

if (poti==ertek) break;
(#) Kovidivi válasza kissi hozzászólására (») Máj 28, 2018 /
 
Sok megoldás van, a legjobb az lenne, ha a for megfelelően lenne meghívva, ugyanis két változónk van, az egyik addig növekszik, amíg el nem éri a másikat. Így talán megérti, hogyan kell a for-t használni.
(#) lalca válasza zoz11 hozzászólására (») Máj 28, 2018 /
 
for (i=rpm2,rpm,i++)
{
analogWrite(ki,rpm2);
}
rpm2 = rpm;
A hozzászólás módosítva: Máj 28, 2018
(#) Kovidivi válasza lalca hozzászólására (») Máj 28, 2018 /
 
Nem értem a kódod... az rpm2-t rakod ki a kimenetre, de az sosem változik, mivel az i-t növeled, nem az rpm2-t. Mi ez a kilépési feltétel, hogy rpm? Amíg rpm igaz? Vagyis csak akkor lép ki a for-ból, ha rpm nulla lesz? Miért kell posztolni olyan kódot, ami nem segít?
for (int aktualis=0;aktualis<vegleges;aktualis++) analogWrite(kimenet,aktualis);
(#) lalca válasza Kovidivi hozzászólására (») Máj 28, 2018 /
 
Bocsi,elnéztem.Valóban (ki,i).
Nem lép ki,lefut a for ciklus. Utána rpm2 = rpm.
A hozzászólás módosítva: Máj 28, 2018
(#) krauszkrisztian hozzászólása Máj 28, 2018 /
 
Üdv!
SIM33ELA GPS modult és egy Quectel M66GPS modult lehet összekapcsolni Arduinoval (külön-külön)?
Ha igen, kaphatok egy kapcsolási rajzot meg egy példaprogramot?
Előre is köszönöm!
A hozzászólás módosítva: Máj 28, 2018
(#) zoz11 válasza Kovidivi hozzászólására (») Máj 28, 2018 /
 
Most ez van benne, ugye ez azt csinálja, hogy szépen növeli a kimeneti feszt a poti által beállított értékig.
Akkor azt kéne megoldanom, hogy ha ezt megcsinálja akkor ebből kilépjen?
  1. rpm = map(analogRead(A5), 0, 1023, 60, 255);
  2.  for (int i=0; i<rpm; i++){
  3.  analogWrite(ki,i);
  4. delay(20);
  5. }
(#) vargham válasza zoz11 hozzászólására (») Máj 28, 2018 /
 
Idézet:
„szépen növeli a kimeneti feszt”

Pontosabban növeli a PWM kitöltési tényezőjét. Kicsit átverés az analogWrite megnevezés...
(#) zoz11 válasza vargham hozzászólására (») Máj 28, 2018 /
 
Az tiszta sor...
(#) Kovidivi válasza zoz11 hozzászólására (») Máj 28, 2018 /
 
Ennek működnie kellene. A kilépési feltétel az "i<rpm". Ha ez nem teljesül, vége a for ciklusnak. Mivel az i-t növeled folyamatosan (i++), ezért rpm*20mS múlva kilép. Nem?
Annyi a gond, hogy mindig 0-ról kezdi a kiírást, tehát ha többször fut le a for ciklus a main-en belül, mindig 0-ról indulva növeli a kimeneti feszültséget. Kellene egy segédváltozó: pl "int kintvanakimeneten", és amikor lefutott a for ciklus, ebben tárolnád, hogy mi az, ami már készen van. Ha ettől nagyobb a potin beolvasott érték, akkor növelni kell a kimenetet, ha kisebb, akkor csökkenteni, tehát kell egy további for ciklus, csak csökkentésre. Így a poti helyzetét szép lassan fogja követni a kimeneted. Problémát okozhat a map fv. által leszűkített tartomány, ugyanis több analogRead értékre is ugyanazt a 60-255 közötti értéket kapod, érdemes átgondolni, nehogy beakadjon emiatt a két for ciklus közé a függvényed.
A hozzászólás módosítva: Máj 28, 2018
(#) lalca válasza zoz11 hozzászólására (») Máj 28, 2018 /
 
1 rpm = map(analogRead(A5), 0, 1023, 60, 255);
2. if( rpm_old < rpm )
3 {
4 for (int i=rpm_old; i <= rpm; i++){
5 analogWrite(ki,i);
6 delay(20);
7 }
8 rpm_old = rpm;
9 }
10
11 if ( rpm_old > rpm )
12 {
13 for( int i=rpm_old; i >= rpm; i-- )
14 analogWrite(ki,i);
15 delay(20);
16 }
17 rpm_old = rpm;
18 }


Talán így.
(#) zoz11 válasza Kovidivi hozzászólására (») Máj 28, 2018 /
 
Szépen lassan fel is fut, de mikor kilép, akkor kezdi elölről 0-ról,
Ez egy kis motor szabályzót kezelne, és az lenne a lényege hogy szép lassan pörgetné fel a motort, és pl mikor lefele tekerem a potit akkor szép lassan venné vissza a fordulatot, ha meg felfelé tekerem, akkor meg szépen lassan emelné.
Következő: »»   449 / 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