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   484 / 854
(#) Kovidivi válasza vyky hozzászólására (») Okt 30, 2018 /
 
Először papíron le kellene vezetned, hogy mit csinál a program. Lépésről lépésre. Átgondolni minden fv-t, kitalálni a működést. Amíg ez nincs meg, csak próbálkozás folyik. Az egész programot kell látnod, nem csak a részegységeket. Pl. kapcsolót vagy nyomógombot használsz? Mikortól lép érvénybe a kapcsoló állapotváltoztatása? Mi történik ha két kapcsoló is aktív? Lekezelni a hibákat, pl.: mindegyik kapcsoló nem lehet bekapcsolva, stb. Sok időt meg tudsz spórolni magadnak, ha tudod, mit kell leprogramoznod!
(#) sargarigo válasza sargarigo hozzászólására (») Okt 30, 2018 /
 
Mellesleg a led még mindig bemenetnek van konfigurálva. Nem halvány így a fénye? Állítsd át OUTPUT-ra a 29. sorban!
(#) vyky válasza sargarigo hozzászólására (») Okt 30, 2018 /
 
Az előző válaszodat nem láttam,elnézést. Átírtam,de most sem jó:S
  1. #include
  2.       #include <LiquidCrystal.h>
  3.  
  4.   LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
  5.   #define encoderA A2 //enkoder 1
  6.    #define encoderB A3 //enkoder 2
  7.    int kapcsoloA =6;//1,5-1,5méter kiosztás
  8.    int kapcsoloB =7;//2-2 méter kiosztás
  9.    int kapcsoloC =8;//2-4 méter kiosztás
  10.    int astate =0;
  11.    int bstate =0;
  12.    int cstate =0;
  13.    int led = 10;// pisztolyszelep
  14.    int Pos = 0;
  15.    int State;
  16.    int LastState;  
  17.    int minPos = 18;//ezt kellene beírni valahogy
  18.    int maxPos = 39;//és ezt is
  19.   const float pi = 3.14;
  20.   byte V = 1;
  21.   const int R = 7;//kerék átmérő
  22.   const int N = 22;//encodr osztása
  23.   float distance = 0;
  24.    
  25.   void setup(){
  26.   lcd.begin(16,2);
  27.   pinMode(kapcsoloA, INPUT_PULLUP);
  28.   pinMode(kapcsoloB, INPUT_PULLUP);
  29.   pinMode(kapcsoloC, INPUT_PULLUP);
  30.   pinMode (led,OUTPUT);
  31.      pinMode (encoderA,INPUT);
  32.      pinMode (encoderB,INPUT);
  33.      digitalWrite(led,LOW);
  34.      lcd.begin(16 ,2);
  35.      lcd.print("Festőgép");
  36.      // Reads the initial state of the outputA
  37.      LastState = digitalRead(encoderA);  
  38.  
  39.   }
  40.   void loop() {
  41.      if (digitalRead(kapcsoloA) == LOW){
  42.      uzemmodA();
  43.      }
  44.    if (digitalRead(kapcsoloB) == LOW){
  45.      uzemmodB();
  46.     }
  47.    if (digitalRead (kapcsoloC) == LOW){
  48.      uzemmodC();
  49.     }
  50.        State = digitalRead(encoderA);
  51.      if (State != LastState){    
  52.        
  53.        if (digitalRead(encoderB) != State) {
  54.          Pos ++;
  55.        }
  56.        else {
  57.          Pos --;
  58.        
  59.      }
  60.            
  61.     LastState = State;}
  62.   }
  63.     void uzemmodA(){
  64.   //if (digitalRead(kapcsoloA)== LOW) {
  65.        distance = Pos+(2*pi*R)/N;
  66.        lcd.setCursor(0,1);
  67.        lcd.print("ertek");
  68.        lcd.println(distance);
  69.        lcd.println("cm");
  70.        lcd.setCursor(0,0);
  71.      lcd.print("1.5-1.5 meter");
  72.      if (Pos == 8){
  73.      V^= 1;
  74.     digitalWrite (led,V);
  75.       Pos = 0;    
  76.       distance = (distance +1 );    
  77.      LastState = State;
  78.      }
  79.   }
  80.     //  }
  81.  
  82.      void uzemmodB{
  83.       //if (digitalRead(kapcsoloB)== LOW) {
  84.        distance = Pos+(2*pi*R)/N;
  85.        lcd.setCursor(0,1);
  86.        lcd.print("ertek");
  87.        lcd.println(distance);
  88.        lcd.println("cm");
  89.        lcd.setCursor(0,0);
  90.      lcd.print("2-2   meter  ");
  91.      if (Pos == 18){
  92.      V^= 1;
  93.     digitalWrite (led,V);
  94.       Pos = 0;    
  95.       distance = (distance +1 );    
  96.      LastState = State;}
  97.      
  98.       }
  99.      //}
  100.      void uzemmodC{
  101.      //if (digitalRead(kapcsoloC)== LOW) {
  102.        distance = Pos+(2*pi*R)/N;
  103.        lcd.setCursor(0,1);
  104.        lcd.print("ertek");
  105.        lcd.println(distance);
  106.        lcd.println("cm");
  107.        lcd.setCursor(0,0);
  108.      lcd.print("2-4   meter  ");
  109.      if (Pos == minPos){
  110.      digitalWrite(led,HIGH);
  111.      
  112.      }else{
  113.      
  114.     digitalWrite (led,LOW);
  115.       Pos = 0;    
  116.       distance = (distance +1 );    
  117.      LastState = State;}
  118.      
  119.       }
  120.     //}
A ledet észre se vettem:S
A hozzászólás módosítva: Okt 30, 2018
(#) sargarigo válasza vyky hozzászólására (») Okt 30, 2018 /
 
Alakul. A tördelés elég nehezen olvasható, de ez most már jónak tűnik. Mi a hiba?
(A tördelésen tudsz javítani, ha az arduino-n belül nyomsz egy Ctrl+T -t. Ekkor megformázza neked.)
A hozzászólás módosítva: Okt 30, 2018
(#) vyky válasza sargarigo hozzászólására (») Okt 30, 2018 /
 
  1. Arduino: 1.8.5 (Windows XP), Alaplap:"Arduino/Genuino Uno"
  2.  
  3. C:\Documents and Settings\Rendszergazda\Dokumentumok\Arduino\majdnem\majdnem.ino: In function 'void loop()':
  4.  
  5. majdnem:44: error: 'uzemmodB' was not declared in this scope
  6.  
  7.       uzemmodB();
  8.  
  9.                ^
  10.  
  11. majdnem:47: error: 'uzemmodC' was not declared in this scope
  12.  
  13.       uzemmodC();
  14.  
  15.                ^
  16.  
  17. C:\Documents and Settings\Rendszergazda\Dokumentumok\Arduino\majdnem\majdnem.ino: At global scope:
  18.  
  19. majdnem:81: error: variable or field 'uzemmodB' declared void
  20.  
  21.       void uzemmodB{
  22.  
  23.            ^
  24.  
  25. majdnem:83: error: expected '}' before ';' token
  26.  
  27.         distance = Pos+(2*pi*R)/N;
  28.  
  29.                                  ^
  30.  
  31. majdnem:84: error: 'lcd' does not name a type
  32.  
  33.         lcd.setCursor(0,1);
  34.  
  35.         ^
  36.  
  37. majdnem:85: error: 'lcd' does not name a type
  38.  
  39.         lcd.print("ertek");
  40.  
  41.         ^
  42.  
  43. majdnem:86: error: 'lcd' does not name a type
  44.  
  45.         lcd.println(distance);
  46.  
  47.         ^
  48.  
  49. majdnem:87: error: 'lcd' does not name a type
  50.  
  51.         lcd.println("cm");
  52.  
  53.         ^
  54.  
  55. majdnem:88: error: 'lcd' does not name a type
  56.  
  57.         lcd.setCursor(0,0);
  58.  
  59.         ^
  60.  
  61. majdnem:89: error: 'lcd' does not name a type
  62.  
  63.       lcd.print("2-2   meter  ");
  64.  
  65.       ^
  66.  
  67. majdnem:90: error: expected unqualified-id before 'if'
  68.  
  69.       if (Pos == 18){
  70.  
  71.       ^
  72.  
  73. majdnem:97: error: expected declaration before '}' token
  74.  
  75.        }
  76.  
  77.        ^
  78.  
  79. exit status 1
  80. 'uzemmodB' was not declared in this scope
  81.  
  82. Ennek a jelentésnek több információja lehetne
  83. a "Bővebb kimenet mutatása fordításkor"
  84. opció engedélyezésével a Fájl -> Beállítások-ban.
(#) sargarigo válasza vyky hozzászólására (») Okt 30, 2018 /
 
Na ilyenkor szoktam ezt csinálni, hogy mindent kiherélek a kódból ami nem feltétlenül kell ahhoz hogy leforduljon. Ezután mindig csak annyit írok bele, hogy leforduljon. Mert így hogy hemzseg a hibáktól, nem fogod megtalálni. Amúgy szerintem ez zárójelezési hiba lesz.
Csak a vázat tartsd meg, minden mást szedjél ki belőle egyelőre! Változók maradhatnak, setup maradhat, és egy üres loop-pal induljunk! Ezt fordítsd le! Eddig működik?
(#) sargarigo válasza vyky hozzászólására (») Okt 30, 2018 / 1
 
Közben megtaláltam. A "void uzemmodB{" helyett "void uzemmodB(){" kell! Ugyanígy a C-nél is! Mondtam hogy zárójel Ettől még érdemes a gyomlálást megcsinálni!
(#) tbarath válasza sargarigo hozzászólására (») Okt 30, 2018 /
 
Nem nehezen olvasható, hanem konkrétan olvashatatlan.
Azt javasolnám vyky-nek, hogy formázza normálisan azt a kódot, a blokkon belüli kódsorokat behúzva, a szemetet kitörölve, stb. Ezzel nem csak a saját dolgát könnyítené meg, hanem a mienket is.

  1. #include <LiquidCrystal.h>
  2.  
  3. LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
  4. int kapcsoloA =6;//1,5-1,5méter kiosztás
  5. int kapcsoloB =7;//2-2 méter kiosztás
  6. int kapcsoloC =8;//2-4 méter kiosztás
  7. int astate =0;
  8. int bstate =0;
  9. int cstate =0;
  10. int led = 10;// pisztolyszelep
  11. int Pos = 0;
  12. int State;
  13. int LastState;
  14. int minPos = 18;//ezt kellene beírni valahogy
  15. int maxPos = 39;//és ezt is
  16. const float pi = 3.14;
  17. byte V = 1;
  18. const int R = 7;//kerék átmérő
  19. const int N = 22;//encodr osztása
  20. float distance = 0;
  21.  
  22. void setup(){
  23.         lcd.begin(16,2);
  24.         pinMode(kapcsoloA, INPUT_PULLUP);
  25.         pinMode(kapcsoloB, INPUT_PULLUP);
  26.         pinMode(kapcsoloC, INPUT_PULLUP);
  27.         pinMode (led,OUTPUT);
  28.         pinMode (encoderA,INPUT);
  29.         pinMode (encoderB,INPUT);
  30.         digitalWrite(led,LOW);
  31.         lcd.begin(16 ,2);
  32.         lcd.print("Festőgép");
  33.         // Reads the initial state of the outputA
  34.         LastState = digitalRead(encoderA);
  35. }
  36.  
  37. void loop(){
  38.         if (digitalRead(kapcsoloA) == LOW){
  39.                 uzemmodA();}
  40.         if (digitalRead(kapcsoloB) == LOW){
  41.                 uzemmodB();}
  42.         if (digitalRead (kapcsoloC) == LOW){
  43.                 uzemmodC();}
  44.         State = digitalRead(encoderA);
  45.         if (State != LastState){    
  46.                 if (digitalRead(encoderB) != State) {
  47.                         Pos ++;}
  48.                 else {
  49.                         Pos --;}
  50.         LastState = State;}
  51. }
  52.  
  53. void uzemmodA(){
  54.         distance = Pos+(2*pi*R)/N;
  55.         lcd.setCursor(0,1);
  56.         lcd.print("ertek");
  57.         lcd.println(distance);
  58.         lcd.println("cm");
  59.         lcd.setCursor(0,0);
  60.         lcd.print("1.5-1.5 meter");
  61.         if (Pos == 8){
  62.                 V^= 1;
  63.                 digitalWrite (led,V);
  64.                 Pos = 0;  
  65.                 distance = (distance +1 );    
  66.                 LastState = State;
  67.         }
  68. }
  69.  
  70. void uzemmodB{
  71.         distance = Pos+(2*pi*R)/N;
  72.         lcd.setCursor(0,1);
  73.         lcd.print("ertek");
  74.         lcd.println(distance);
  75.         lcd.println("cm");
  76.         lcd.setCursor(0,0);
  77.         lcd.print("2-2   meter  ");
  78.         if (Pos == 18){
  79.                 V^= 1;
  80.                 digitalWrite (led,V);
  81.                 Pos = 0;  
  82.                 distance = (distance +1 );    
  83.                 LastState = State;}
  84. }
  85.  
  86. void uzemmodC{
  87.         distance = Pos+(2*pi*R)/N;
  88.         lcd.setCursor(0,1);
  89.         lcd.print("ertek");
  90.         lcd.println(distance);
  91.         lcd.println("cm");
  92.         lcd.setCursor(0,0);
  93.         lcd.print("2-4   meter  ");
  94.         if (Pos == minPos){
  95.                 digitalWrite(led,HIGH);}
  96.         else{
  97.                 digitalWrite (led,LOW);
  98.                 Pos = 0;  
  99.                 distance = (distance +1 );    
  100.                 LastState = State;
  101.         }
  102. }

Került van 2 percbe megformázni.
A hiba amúgy egyértelműen látszik, ha az uzemmodA és uzemmodB függvények deklarációját egymás alá teszi egy text editorban, a hibaüzenet is beszédes.
A hozzászólás módosítva: Okt 30, 2018
(#) vyky válasza sargarigo hozzászólására (») Okt 30, 2018 /
 
Köszönöm valóban az volt a hiba Pedig ezerszer megnéztem
Abban tudnál segíteni hogy az uzemmodC-ot életre keltsem?
Mert ott két külön méretre kéne reagálnia .
(#) vyky válasza tbarath hozzászólására (») Okt 30, 2018 /
 
Jogos köszönöm,és elnézést
(#) sargarigo válasza vyky hozzászólására (») Okt 30, 2018 /
 
Kódot mutass! És előtte nyomd meg a Ctrl+T -t hogy mondtam!
(#) sargarigo válasza tbarath hozzászólására (») Okt 30, 2018 /
 
Idézet:
„Nem nehezen olvasható, hanem konkrétan olvashatatlan.”

Nem akartam bántani, van elég baja

De ettől még a Ctrl+T segít! Nem kell a két perc sem, csak az a 2ms amíg megnyomja (szerintem te sem ismerted ).
(#) vyky hozzászólása Okt 30, 2018 /
 
A C üzemmódnál a kapcsoló hatására el kell számolnia elöször 38-ig az enkóder alapján,és bekapcsolni a ledet majd a következő 18 lépésig évge hagynia ,és utána lekapcsolnia,és ez ismétlődik.
  1. #include <LiquidCrystal.h>
  2.  
  3. LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
  4. #define encoderA A2 //enkoder 1
  5. #define encoderB A3 //enkoder 2
  6. int kapcsoloA = 6; //1,5-1,5méter kiosztás
  7. int kapcsoloB = 7; //2-2 méter kiosztás
  8. int kapcsoloC = 8; //2-4 méter kiosztás
  9. int astate = 0;
  10. int bstate = 0;
  11. int cstate = 0;
  12. int led = 10;// pisztolyszelep
  13. int Pos = 0;
  14. int State;
  15. int LastState;
  16. int minPos = 18;//ezt kellene beírni valahogy
  17. int maxPos = 39;//és ezt is
  18. const float pi = 3.14;
  19. byte V = 1;
  20. const int R = 7;//kerék átmérő
  21. const int N = 22;//encodr osztása
  22. float distance = 0;
  23.  
  24. void setup() {
  25.   lcd.begin(16, 2);
  26.   pinMode(kapcsoloA, INPUT_PULLUP);
  27.   pinMode(kapcsoloB, INPUT_PULLUP);
  28.   pinMode(kapcsoloC, INPUT_PULLUP);
  29.   pinMode (led, OUTPUT);
  30.   pinMode (encoderA, INPUT);
  31.   pinMode (encoderB, INPUT);
  32.   digitalWrite(led, LOW);
  33.   lcd.begin(16 , 2);
  34.   lcd.print("Festőgép");
  35.   // Reads the initial state of the outputA
  36.   LastState = digitalRead(encoderA);
  37.  
  38. }
  39. void loop() {
  40.   if (digitalRead(kapcsoloA) == LOW) {
  41.     uzemmodA();
  42.   }
  43.   if (digitalRead(kapcsoloB) == LOW) {
  44.     uzemmodB();
  45.   }
  46.   if (digitalRead (kapcsoloC) == LOW) {
  47.     uzemmodC();
  48.   }
  49.   State = digitalRead(encoderA);
  50.   if (State != LastState) {
  51.  
  52.     if (digitalRead(encoderB) != State) {
  53.       Pos ++;
  54.     }
  55.     else {
  56.       Pos --;
  57.  
  58.     }
  59.  
  60.     LastState = State;
  61.   }
  62. }
  63. void uzemmodA() {
  64.   //if (digitalRead(kapcsoloA)== LOW) {
  65.   distance = Pos + (2 * pi * R) / N;
  66.   lcd.setCursor(0, 1);
  67.   lcd.print("ertek");
  68.   lcd.println(distance);
  69.   lcd.println("cm");
  70.   lcd.setCursor(0, 0);
  71.   lcd.print("1.5-1.5 meter");
  72.   if (Pos == 8) {
  73.     V ^= 1;
  74.     digitalWrite (led, V);
  75.     Pos = 0;
  76.     distance = (distance + 1 );
  77.     LastState = State;
  78.   }
  79. }
  80. //  }
  81.  
  82. void uzemmodB(){
  83.   //if (digitalRead(kapcsoloB)== LOW) {
  84.   distance = Pos + (2 * pi * R) / N;
  85.   lcd.setCursor(0, 1);
  86.   lcd.print("ertek");
  87.   lcd.println(distance);
  88.   lcd.println("cm");
  89.   lcd.setCursor(0, 0);
  90.   lcd.print("2-2   meter  ");
  91.   if (Pos == 18) {
  92.     V ^= 1;
  93.     digitalWrite (led, V);
  94.     Pos = 0;
  95.     distance = (distance + 1 );
  96.     LastState = State;
  97.   }
  98.  
  99. }
  100. //}
  101. void uzemmodC(){
  102.   //if (digitalRead(kapcsoloC)== LOW) {
  103.   distance = Pos + (2 * pi * R) / N;
  104.   lcd.setCursor(0, 1);
  105.   lcd.print("ertek");
  106.   lcd.println(distance);
  107.   lcd.println("cm");
  108.   lcd.setCursor(0, 0);
  109.   lcd.print("2-4   meter  ");
  110.   if (Pos == minPos) {
  111.     digitalWrite(led, HIGH);
  112.  
  113.   } else{
  114.  
  115.     digitalWrite (led, LOW);
  116.     Pos = 0;
  117.     distance = (distance + 1 );
  118.     LastState = State;}
  119.  
  120. }
  121. //}
A hozzászólás módosítva: Okt 30, 2018
(#) sargarigo válasza vyky hozzászólására (») Okt 30, 2018 /
 
Fel kell bontani a feladatot részeire. A gyomlálás megvolt már? Legyen egy működő kódod! Ha ez megvan, akkor lehet bővíteni a funkciókat.
(#) vyky válasza sargarigo hozzászólására (») Okt 30, 2018 /
 
Már működik a kód, csak a c uzemmod nem működik. Minden fölös kivettem.
(#) sargarigo válasza vyky hozzászólására (») Okt 30, 2018 /
 
Az A és B tehát rendesen működik? Tekered, számol, és amit akarsz?
(#) sargarigo válasza sargarigo hozzászólására (») Okt 30, 2018 /
 
Mi az amit rosszul csinál?
(#) vyky válasza sargarigo hozzászólására (») Okt 30, 2018 /
 
Igen az jó. Csak a c-t nem tudom életre kelteni.
(#) sargarigo válasza vyky hozzászólására (») Okt 30, 2018 /
 
Amúgy van még valami ami nem tetszik. Ha jól látom, csak akkor van hatása az enkódernek, ha nyomod hozzá valamelyik kapcsolót. Ezt így is akartad?
(#) vyky válasza sargarigo hozzászólására (») Okt 30, 2018 /
 
Igen. Ez szándékos volt.
(#) sargarigo válasza vyky hozzászólására (») Okt 30, 2018 /
 
A 38-at honnan kellene tudnia a programnak? minPos-ra hivatkozol, nem maxPos-ra...
(#) vyky válasza sargarigo hozzászólására (») Okt 30, 2018 /
 
Igaz, de csak próbálkoztam semmi eredménnyel A minPos és a maxPos kellene bele.
(#) sargarigo válasza vyky hozzászólására (») Okt 30, 2018 /
 
De most az a baj hogy nincs ötleted hogy kell megoldani, vagy próbáltad de nem megy? Mert nyomát sem látom benne annak amit fentebb írtál.
(#) vyky válasza sargarigo hozzászólására (») Okt 30, 2018 /
 
Ha megnézed az uzemmod-t, akkor látod elkeztem de csak annyit tesz, hogy elszamol3-ig és ott megáll
(#) sargarigo válasza vyky hozzászólására (») Okt 30, 2018 /
 
Estére megnézem, most nem vagyok gépnél
(#) vyky válasza sargarigo hozzászólására (») Okt 30, 2018 /
 
Én is a dokinál ülök, de köszönöm előre.
(#) KoblogPerGyok válasza vyky hozzászólására (») Okt 30, 2018 /
 
Szerintem megvan. Nem kód, hanem terv, de érthető. Sok problémát megold amit itt nem vetettél fel. Hátrafelé ha elmozdul akkor ne fessen, mert akkor 3 réteg lenne, főkapcsoló stb.

Be tudom szkennelni neked, csak nincs hova küldenem, kellene egy e-mail cím, illetve egy messenger elérhetőség megbeszélni.
A hozzászólás módosítva: Okt 30, 2018
(#) tbarath válasza sargarigo hozzászólására (») Okt 30, 2018 / 1
 
Én se bántani akartam, hanem segíteni. A kezdőknek különösen fontos az, hogy ilyenekkel ne nehezítsék a saját dolgukat.
(#) KoblogPerGyok válasza KoblogPerGyok hozzászólására (») Okt 30, 2018 / 1
 
Illetve ha minden igaz, megoldja azt is, hogyha a kerék megáll, de olyan helyen ahol festeni kell, akkor nem fest, nehogy elfolyassa az összes festéket.
(#) sargarigo válasza KoblogPerGyok hozzászólására (») Okt 30, 2018 /
 
Szerintem ide nyugodtan írd le, hogy figyelembe vehessük a szempontokat! Így is az információ áramlása szokott a legfőbb gond lenni
Következő: »»   484 / 854
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