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   647 / 839
(#) pipi válasza Jonni hozzászólására (») Aug 10, 2020 /
 
C,D a javasolt megoldás. A prociban lévő felhúzó ellenállás igen nagy értékű(nézz adatlapot), nem igazán lehet rá számítani. pláne ha hosszabb kanócon lóg a kapcsoló, simán zavarérzékeny lesz. Az R2 is erősen javasolt, a nyomógomb megnyomásakor igen nagy áram folyhat a kondiból, ez bazi nagy zavart okozhat, és a kapcsolót sem kíméli, valaminek illik korlátozni a kisütő áramot...
(#) KoblogPerGyok válasza Jonni hozzászólására (») Aug 10, 2020 /
 
Helló!

Igen az jónak tűnik, de itt van egy másik lehetőség is:

Bővebben: Link

3. ábra és a fölötte lévő szöveg.
(#) Jonni válasza KoblogPerGyok hozzászólására (») Aug 10, 2020 /
 
Ha jól látom ehhez ic kell (azt meg ide most nem építenék be). A legjobb valami pofonegyszerű megoldás lenne.
(#) sargarigo válasza Jonni hozzászólására (») Aug 10, 2020 /
 
Esetleg próbáld meg ez: Bővebben: Link
(#) Kovidivi válasza Vacok hozzászólására (») Aug 10, 2020 /
 
500Hz okés.
(#) hulala hozzászólása Aug 14, 2020 /
 
Sziasztok. A kérdésem az lenne, hogy triac vagy tirisztor vezérlése megoldható úgy arduinóval hogy a fázishasítás szög mellett még időzítés is beállítható, megjelenithető legyen valamint az értékek program szám alatt elmenthetők legyenek? Én nem értek az arduinóhoz így az apróhirdetésben hirdettem meg mint fizetős munkalehetőség de senki nem jelentkezett rá. Ez vajon egy nehéz feladat lenne? Több egyszerű rajzot is találtam a neten triac vezérlésre programmal együtt de nekem bonyolultabb kellene. Szóval még egyszer azt szeretném kérdezni konkrétan, hogy megoldható-e a feladat arduinóval? A válaszokat előre is köszönöm.
(#) kapu48 válasza hulala hozzászólására (») Aug 14, 2020 /
 
Természetesen megoldható a feladat.
(#) GPeti1977 válasza hulala hozzászólására (») Aug 14, 2020 /
 
Egy akku hegesztőt készítettem, tud fázist hasítani meg lehet adni hány periódus hosszú időt adjon és ezt 2x
  1. #include <LiquidCrystal.h>
  2. LiquidCrystal lcd(4, 5, 6, 7, 8, 9);
  3.  
  4. bool w1 = false;
  5. bool w2 = false;
  6.  
  7. volatile int p = 0;
  8. volatile int zc1 = 0;
  9. volatile int zc2 = 0;
  10. volatile int zc1t = 6;
  11. volatile int zc2t = 6;
  12. volatile int offt = 50;
  13. volatile int offc = 0;
  14. volatile bool offen = false;
  15. volatile int vt = 0;
  16. int bt=0;
  17. int bt1 = 0;
  18. int menu = 1;
  19. volatile int vbt;
  20.  
  21. void setup() {
  22.   pinMode(2,INPUT);//zcross
  23.   pinMode(3,OUTPUT);//optotriak
  24.   digitalWrite(3, LOW);
  25.   pinMode(A5,OUTPUT);
  26.   digitalWrite(A5, LOW);//valve
  27.   pinMode(A1, OUTPUT);
  28.   digitalWrite(A1, LOW);
  29.   pinMode(A0, INPUT);//button
  30.   pinMode(10,INPUT);//bt1
  31.   pinMode(11,INPUT);
  32.   pinMode(12,INPUT);
  33.   pinMode(13, OUTPUT);
  34.   digitalWrite(13, LOW);
  35.   lcd.begin(16, 2);
  36.   delay(250);
  37.   //lcd.print("OK");
  38.   attachInterrupt(digitalPinToInterrupt(2), Zc, FALLING);
  39.   lcdwr();
  40.  
  41. }
  42. void lcdwr(){
  43.   lcd.setCursor(0, 0);
  44.   lcd.print("W ");
  45.   lcd.print(zc1t*10);
  46.   lcd.print("ms P");
  47.   lcd.print(offt*10);
  48.   lcd.print("ms ");
  49.   lcd.setCursor(0, 1);
  50.   lcd.print("W ");
  51.   lcd.print(zc2t*10);
  52.   lcd.print("ms Pwr");
  53.   lcd.print((8-p)*125/11+9);
  54.   lcd.print("% ");
  55. }
  56. void loop() {
  57. if(vt > 0) vt--;
  58. if (vt == 0 && vbt == 1){
  59.   vbt = 0;
  60.    digitalWrite(A5, LOW);
  61.    digitalWrite(13, LOW);
  62. }
  63. int b = digitalRead(A0);
  64. if(b>0) bt=0;
  65. delay(1);
  66. if(b==0 && bt == 0){
  67.   bt=1;
  68.   digitalWrite(A5, HIGH);
  69.   digitalWrite(13, HIGH);
  70.   delay(500);
  71.   w1=true;
  72. }
  73.  
  74.   if(millis() % 200 == 0){
  75.     int mb = digitalRead(10);
  76.     if(mb>0) bt1= 0;
  77.     if(mb == 0 && bt1==0){
  78.       bt1=1;
  79.       menu++;
  80.       if(menu>3) menu = 0;
  81.       for(int i = 0; i < menu+1; i++){
  82.         digitalWrite(13, HIGH);
  83.         delay(100);
  84.         digitalWrite(13, LOW);
  85.         delay(250);
  86.       }
  87.       digitalWrite(13, LOW);
  88.     }
  89.     if(menu==0){
  90.       //zc1t
  91.       if(digitalRead(11) == 0){
  92.         if(zc1t < 10) zc1t +=2 ;
  93.         lcdwr();
  94.       }
  95.  
  96.       if(digitalRead(12) == 0){
  97.         if(zc1t > 2) zc1t -=2;
  98.         lcdwr();
  99.       }
  100.      
  101.     }
  102.  
  103.    if(menu==1){
  104.     //zc2t
  105.     if(digitalRead(11) == 0){
  106.         if(zc2t < 30) zc2t +=2;
  107.         lcdwr();
  108.       }
  109.  
  110.       if(digitalRead(12) == 0){
  111.         if(zc2t > 2) zc2t -=2;
  112.         lcdwr();
  113.       }
  114.    
  115.    }
  116.    if(menu==2){
  117.     //offt
  118.     if(digitalRead(11) == 0){
  119.         if(offt < 50) offt +=2 ;
  120.         lcdwr();
  121.       }
  122.  
  123.       if(digitalRead(12) == 0){
  124.         if(offt > 4) offt -=2;
  125.         lcdwr();
  126.       }
  127.    
  128.    }
  129.    if(menu==3){
  130.     //p 0-8
  131.     if(digitalRead(11) == 0){
  132.         if(p>0)p--;
  133.         lcdwr();
  134.       }
  135.  
  136.       if(digitalRead(12) == 0){
  137.         if(p<8)p++;
  138.         lcdwr();
  139.       }
  140.    
  141.    }
  142.  
  143.   }
  144.  
  145. }
  146.  
  147. void Zc() {
  148.  
  149. if(w1 == true || w2 == true){
  150.   int dimtime = (1000*p);    // For 60Hz =>65  
  151.   int ontime= 9000-dimtime;
  152.   delayMicroseconds(dimtime);
  153.  
  154.   digitalWrite(3, HIGH);
  155.   delayMicroseconds(ontime);
  156.   digitalWrite(3, LOW);
  157.   if(w1==true){
  158.     zc1++;
  159.     if(zc1 > zc1t){
  160.       w1 = false;
  161.       zc1 = 0;
  162.       offen = true;
  163.      
  164.     }
  165.   }
  166.   if(w2 == true) {
  167.     zc2++;
  168.     if(zc2 > zc2t){
  169.     w2 = false;
  170.     zc2= 0;
  171.     vt = 500;
  172.     vbt = 1;
  173.     }
  174.   }
  175.    
  176. }
  177. else {
  178.   digitalWrite(3, LOW);  
  179. }
  180.  
  181.  if(offen==true){
  182.   offc++;
  183.   if(offc > offt){
  184.     offen = false;
  185.     offc = 0;
  186.     w2=true;
  187.   }
  188.  }
  189.  
  190. }
(#) hulala válasza GPeti1977 hozzászólására (») Aug 14, 2020 /
 
Köszi. Ettől bonyolultabbat szeretnék azaz több beállítási érték elmentése, külső szelep vezérlése.
(#) troby hozzászólása Aug 15, 2020 /
 
Sziasztok, el netes kalkulátor alapján összeraktam egy elég gyors timert mert 100-300ns-ot kellene mérnem és az a problémám hogy a főprogramom csak egyszer fut le. Valamit nem jól konfiguráltam esetleg? Egy leegyszerűsített részét beillesztem ide.
  1. #define ledPin 13
  2. void setupTimer1() {
  3.   noInterrupts();
  4.   TCCR1A = 0;
  5.   TCCR1B = 0;
  6.   TCNT1 = 0;
  7.   OCR1A = 1;
  8.   TCCR1B |= (1 << WGM12);
  9.   TCCR1B |= (1 << CS11);
  10.   TIMSK1 |= (1 << OCIE1A);
  11.   interrupts();
  12. }
  13. void setup() {
  14.   pinMode(ledPin, OUTPUT);
  15.   setupTimer1();
  16.   Serial.begin (9600);
  17. }
  18. void loop() {
  19.   Serial.println ("A");
  20. }
  21. ISR(TIMER1_COMPA_vect) {
  22.   digitalWrite(ledPin, digitalRead(ledPin) ^ 1);
  23. }
(#) vargham válasza troby hozzászólására (») Aug 15, 2020 / 1
 
Azért, mert valószínűleg minden idejét az ISR-ben tölti. Kerüld a digitalWrite és a digitalRead függvények használatát! Nagy az erőforrás igényük.
Ha egy lábat invertálni (toggle) akarsz, akkor használd ezt:
PORTx ^= 1 << PINn
A LED esetén PB5, vagyis:
PORTB ^= 1 << 5
Ez néhány gépi utasítássá fordul le.
(#) sandor1632 válasza troby hozzászólására (») Aug 15, 2020 /
 
A "setupTimer1();" sort helyezd át a setup()-ból a loop()-ba.

Most a void setup()-ban van ez a sor, a void setup() pedig csak egyszer fut le, induláskor. A void loop() folyamatosan ismértlődik.

Ugyebár ez a setupTimer1(); sor hívja meg a blokkot amit írtál, de így csak egyszer fut le ez is.
Ennyi a titok nyitja
A hozzászólás módosítva: Aug 15, 2020
(#) sandor1632 válasza vargham hozzászólására (») Aug 15, 2020 /
 
Egyszerűbb a megoldás, lásd korábbi hozzászólásom!
A hozzászólás módosítva: Aug 15, 2020
(#) troby válasza vargham hozzászólására (») Aug 15, 2020 /
 
Köszönöm szépen. Nekem is sandor1632.
(#) cua válasza troby hozzászólására (») Aug 16, 2020 /
 
Ha tenyleg 1-300ns kornyeken akarsz mericskelni, akkor a C mar nem eleg hatekony, vedd fontolora az assembly hasznalatat.
20MHz-nel mar minimum 50ns egy-egy utasitas (gepi kod) vegrehajtasi ideje!
A hozzászólás módosítva: Aug 16, 2020
(#) troby válasza cua hozzászólására (») Aug 16, 2020 /
 
Elírtam, a leggyorsabb amit jó lenne mérni az 125 μs. Vakut szeretnék vezérelni és amit vettem opto csatoló kapcsol 2-4ns alatt azzal kevertem. Erre a célra még jó a C ugye?
(#) cua válasza troby hozzászólására (») Aug 16, 2020 /
 
Persze, sokkal jobb a helyzet
Ennek ellenere erdemes kicsit atnezni amit masok fentebb mar javasoltak: pl digitalWrite/Read egyszeruen tul sok mindent csinal, ezert lassu, erdemes kihagyni.
Ha nincs feltetlen szukseged az arduino bootloader-re es a kapcsolodo kornyezetre, akkor inkabb hasznalj sima C-t.
Ha viszont nem akarsz elmelyedni az atmel mcu-k lekivilagaban, akkor az arduino jo kompromisszum, mert haladosan lehet vele fejleszteni, sok minden keszen van, "csak" hasznalni kell tudni.
(#) moltam válasza cua hozzászólására (») Aug 16, 2020 /
 
Nem muszáj kihagyni, arduino alól is lehet a regisztereket piszkálni közvetlenül és nem a digitalwrite ot használni.
(#) troby válasza cua hozzászólására (») Aug 16, 2020 /
 
Köszönöm, egyelőre megírom itt azzal a gyorsítással amit írtak aztán ha lesz kis sikerélmény utána faragok rajta még.
(#) cua válasza moltam hozzászólására (») Aug 16, 2020 /
 
En a digitalWrite/Read-re ertettem a kihagyast es foleg arra az esetre amikor kicsi/pontos idozitesre van szukseg (erdetileg 1-200 ns-rol volt szo) , amugy nagyjabol egyetertunk
(#) troby válasza vargham hozzászólására (») Aug 16, 2020 /
 
Esetleg még abban kérhetném a segítséged, hogy a read funkciónál ez hogyan nézne ki egy fordított logikás gombnál mert az encoder-emen a gomb fixen magason van amikor megnyomom teszi testre. Normál esetén ha jól értem akkor ez lenne de nem tudom fordítva hogyan kell:
  1. byte port = 2;
  2. byte gomb = 0;
  3.  
  4. void setup() {
  5.   Serial.begin (9600);
  6.   DDRC = B00000000;
  7. }
  8. void loop() {
  9.   gomb = (PINC & (1 << port)) >> gomb;
  10.   if (gomb == 1)
  11.   {
  12.     Serial.println ("Lenyomva");
  13.   }
  14. }
A hozzászólás módosítva: Aug 16, 2020
(#) Kera_Will válasza troby hozzászólására (») Aug 16, 2020 / 1
 
A valtozo utan rakott felkialto jel negalt allapotot jelent.
Probald meg
If (gomb!==1)
Vagy csak 0 irsz az 1 helyere ... ebben az ifes sorban.
(#) kissi válasza Kera_Will hozzászólására (») Aug 16, 2020 /
 
Inkább így: If (gomb!=1)
(#) asch válasza hulala hozzászólására (») Aug 17, 2020 /
 
Az apróhirdetsében kiírtad, hogy hardver és szoftver fejlesztése és ott van az is, hogy 20.000 Forint. Szerinted mennyi idő megtervezni egy ilyen eszközt? Csak az alkatrészek adatlapjainak olvasgatásával elmegy egy rakás óra. Az áramkör megtervezése is sok óra - még annak is aki gyakorlott ebben. Aztán még lehet forrasztgatni. És akkor a végén még egy kis szoftverfejlesztésecske: akármilyen egyszerű is (de nem úgy tűnik, hogy annyira egyszerű volna), azért néhány órát eltart a programozgatás is. Összességében simán elmegy vele több hét is mire tisztességesen összerakott prototípust csinál az ember. Piaci alapon egy ilyen fejlesztés inkább a milliós nagyságrendben van. Azt is számold bele, hogy az az ember, aki áramkörökhöz is ért és rendesen tud programozni is, az igen keresett a piacon, nem gombokért dolgozik. Nem úgy van, hogy fizetős munkalehetőséget keres, hanem a cégek kapkodnak érte. Plusz a kicsi munka mindig sokkal drágább mint a nagy, mert nehéz időt keríteni rá. Gondolod, hogy a jó szakembereknek annyira sok idejük van?

Hobbiból elképzelhető, hogy valaki megcsinálja, de ahhoz meg tudni kellene, hogy mit is csinál ez a dolog, és mitől lesz érdekes játszani vele?
(#) sargarigo válasza asch hozzászólására (») Aug 17, 2020 /
 
Idézet:
„Hobbiból elképzelhető, hogy valaki megcsinálja, de ahhoz meg tudni kellene, hogy mit is csinál ez a dolog, és mitől lesz érdekes játszani vele?”

Arról nem beszélve, hogy hobbiból lehet hogy megcsinálja valaki gombokért is a játék kedvéért.. De ehhez tényleg tudni kéne mindent a cuccról.
(#) Kovidivi válasza sargarigo hozzászólására (») Aug 17, 2020 /
 
A legjobb, ha menet közben jönnek az ötletek, hogy ez, meg az még belemehetne, hiszen csak pár sor progeamkód!
Én csak úgy vállalnék el egy ilyen feladatot, ha tényleg, korrekten meg van a program logikája is adva, mikor, mit csinál, hogyan, mennyi ideig, mi történik, ha ez vagy az van, mik a határértékek, specifikációk. Ha ezek hiányoznak, abból sok jó nem sülhet ki. De ezt megírni/átgondolni már magában is óriási feladat.
(#) sargarigo válasza Kovidivi hozzászólására (») Aug 17, 2020 /
 
Ez így van!
(#) Jonni válasza asch hozzászólására (») Aug 17, 2020 /
 
Idézet:
„Összességében simán elmegy vele több hét is”


Szeintem keveset mondtál.... akár több hónapot is igénybe vehet. És akkor még nem volt szó az anyagok beszerzéséről ami szintén vanhogy sok időt vesz igénybe
(#) Bakman válasza Kovidivi hozzászólására (») Aug 17, 2020 /
 
Idézet:
„A legjobb, ha menet közben jönnek az ötletek”
Ez mindig így van.
(#) taresz hozzászólása Aug 19, 2020 /
 
Sziasztok!

Egy kis segítséget kérek arduino ügyben. Abszolút láma vagyok hozzá.
A gyerek elektromos rollerébe szeretnék egy kijelzőt készíteni. Erről a projektről lenne szó:

https://github.com/augisbud/m365_dashboard

Mindenem meg van hozzá. programozó, arduino pro mini, oled kijelző, igaz nem I2C, hanem SPI.

Kérdése(i)m:

A hivatkozott oldalon szereplő fájlokat hogy tudom beletenni az arduino panelbe, illetve az SPI kijelzőt tudom-e használni az I2C helyett és ha igen, akkor hogyan?

Mindennemű segítséget nagyon köszönök!
Következő: »»   647 / 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