Fórum témák
- • A műhely (bemutató topik, ahol az alkotások készülnek)
- • Rádióamatőrök topikja
- • Sprint-Layout NYÁK-tervező
- • Számítógép hiba, de mi a probléma?
- • Rádió áthangolása, OIRT - CCIR konverter
- • Suzuki Swift elektronika
- • PLC kérdések
- • Transzformátor készítés, méretezés
- • USB 3.2 HUB modul
- • Fejhallgató erősítő
- • Hangváltók (készítése)
- • Elfogadnám, ha ingyen elvihető
- • Klíma szervizelés, javítás
- • Arduino
- • Dobozolási technikák, műszerdobozok
- • Erősítő mindig és mindig
- • Borhűtő vezérlő panel
- • Kondenzátor
- • Hűtőgép kompresszor
- • Kapcsolóüzemű tápegység
- • Videomagnó problémák
- • Opel Astra elektromos hibák
- • Analóg voltmérő (multiméter)
- • Mosogatógép hiba
- • Boombox javítás
- • Li-Ion saját akkucsomag készítése
- • Kaputelefon
- • Adatlapot keresek
- • CNC építése házi alkatrészekből az alapoktól
- • Autóriasztó és központi zár
- • Elektromos távirányítós kapunyitó
- • Analóg oszcilloszkóp javítása
- • LED szalag
- • Hangszórójavítás (otthon)
- • Mosógép vezérlők és általános problémáik
- • Érdekességek
- • Villanypásztor
- • IMI villanymotor
- • Digitális adatátvitel
- • Nagyfeszültségű tápegység
- • 3-fázisú Modbus-os teljesítményszabályzó (SCR power controller)
- • Villanyszerelés
- • TDA7294 végerősítő
- • Klíma beszerelése, fűtés-hűtés házilag
- • Kombikazán működési hiba
- • Általános antennás kérdések, válaszok
- • Elektronikai témájú könyvek újságok
- • Elektromos vezérlésű pneumatika
- • Internetes rádióvevő
- • Alternativ HE találkozó(k)
- • 3D nyomtatás
- • Felajánlás, azaz ingyen elvihető
- • Akkumulátor töltő
- • Háromfázisú aggregátor
- • Szintetizátor javítás
» Több friss téma
|
A klónok CH340 Soros-USB illesztőjének drivere ( Letöltés)
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!
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!
Az előző válaszodat nem láttam,elnézést. Átírtam,de most sem jó:S #include
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
#define encoderA A2 //enkoder 1
#define encoderB A3 //enkoder 2
int kapcsoloA =6;//1,5-1,5méter kiosztás
int kapcsoloB =7;//2-2 méter kiosztás
int kapcsoloC =8;//2-4 méter kiosztás
int astate =0;
int bstate =0;
int cstate =0;
int led = 10;// pisztolyszelep
int Pos = 0;
int State;
int LastState;
int minPos = 18;//ezt kellene beírni valahogy
int maxPos = 39;//és ezt is
const float pi = 3.14;
byte V = 1;
const int R = 7;//kerék átmérő
const int N = 22;//encodr osztása
float distance = 0;
void setup(){
lcd.begin(16,2);
pinMode(kapcsoloA, INPUT_PULLUP);
pinMode(kapcsoloB, INPUT_PULLUP);
pinMode(kapcsoloC, INPUT_PULLUP);
pinMode (led,OUTPUT);
pinMode (encoderA,INPUT);
pinMode (encoderB,INPUT);
digitalWrite(led,LOW);
lcd.begin(16 ,2);
lcd.print("Festőgép");
// Reads the initial state of the outputA
LastState = digitalRead(encoderA);
}
void loop() {
if (digitalRead(kapcsoloA) == LOW){
uzemmodA();
}
if (digitalRead(kapcsoloB) == LOW){
uzemmodB();
}
if (digitalRead (kapcsoloC) == LOW){
uzemmodC();
}
State = digitalRead(encoderA);
if (State != LastState){
if (digitalRead(encoderB) != State) {
Pos ++;
}
else {
Pos --;
}
LastState = State;}
}
void uzemmodA(){
//if (digitalRead(kapcsoloA)== LOW) {
distance = Pos+(2*pi*R)/N;
lcd.setCursor(0,1);
lcd.print("ertek");
lcd.println(distance);
lcd.println("cm");
lcd.setCursor(0,0);
lcd.print("1.5-1.5 meter");
if (Pos == 8){
V^= 1;
digitalWrite (led,V);
Pos = 0;
distance = (distance +1 );
LastState = State;
}
}
// }
void uzemmodB{
//if (digitalRead(kapcsoloB)== LOW) {
distance = Pos+(2*pi*R)/N;
lcd.setCursor(0,1);
lcd.print("ertek");
lcd.println(distance);
lcd.println("cm");
lcd.setCursor(0,0);
lcd.print("2-2 meter ");
if (Pos == 18){
V^= 1;
digitalWrite (led,V);
Pos = 0;
distance = (distance +1 );
LastState = State;}
}
//}
void uzemmodC{
//if (digitalRead(kapcsoloC)== LOW) {
distance = Pos+(2*pi*R)/N;
lcd.setCursor(0,1);
lcd.print("ertek");
lcd.println(distance);
lcd.println("cm");
lcd.setCursor(0,0);
lcd.print("2-4 meter ");
if (Pos == minPos){
digitalWrite(led,HIGH);
}else{
digitalWrite (led,LOW);
Pos = 0;
distance = (distance +1 );
LastState = State;}
}
//}
A ledet észre se vettem:S A hozzászólás módosítva: 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
Arduino: 1.8.5 (Windows XP), Alaplap:"Arduino/Genuino Uno"
C:\Documents and Settings\Rendszergazda\Dokumentumok\Arduino\majdnem\majdnem.ino: In function 'void loop()':
majdnem:44: error: 'uzemmodB' was not declared in this scope
uzemmodB();
^
majdnem:47: error: 'uzemmodC' was not declared in this scope
uzemmodC();
^
C:\Documents and Settings\Rendszergazda\Dokumentumok\Arduino\majdnem\majdnem.ino: At global scope:
majdnem:81: error: variable or field 'uzemmodB' declared void
void uzemmodB{
^
majdnem:83: error: expected '}' before ';' token
distance = Pos+(2*pi*R)/N;
^
majdnem:84: error: 'lcd' does not name a type
lcd.setCursor(0,1);
^
majdnem:85: error: 'lcd' does not name a type
lcd.print("ertek");
^
majdnem:86: error: 'lcd' does not name a type
lcd.println(distance);
^
majdnem:87: error: 'lcd' does not name a type
lcd.println("cm");
^
majdnem:88: error: 'lcd' does not name a type
lcd.setCursor(0,0);
^
majdnem:89: error: 'lcd' does not name a type
lcd.print("2-2 meter ");
^
majdnem:90: error: expected unqualified-id before 'if'
if (Pos == 18){
^
majdnem:97: error: expected declaration before '}' token
}
^
exit status 1
'uzemmodB' was not declared in this scope
Ennek a jelentésnek több információja lehetne
a "Bővebb kimenet mutatása fordításkor"
opció engedélyezésével a Fájl -> Beállítások-ban.
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?
Közben megtaláltam. A "void uzemmodB{" helyett "void uzemmodB(){" kell! Ugyanígy a C-nél is! Mondtam hogy zárójel ![](/pic/smile/smile.gif) Ettől még érdemes a gyomlálást megcsinálni!
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.
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int kapcsoloA =6;//1,5-1,5méter kiosztás
int kapcsoloB =7;//2-2 méter kiosztás
int kapcsoloC =8;//2-4 méter kiosztás
int astate =0;
int bstate =0;
int cstate =0;
int led = 10;// pisztolyszelep
int Pos = 0;
int State;
int LastState;
int minPos = 18;//ezt kellene beírni valahogy
int maxPos = 39;//és ezt is
const float pi = 3.14;
byte V = 1;
const int R = 7;//kerék átmérő
const int N = 22;//encodr osztása
float distance = 0;
void setup(){
lcd.begin(16,2);
pinMode(kapcsoloA, INPUT_PULLUP);
pinMode(kapcsoloB, INPUT_PULLUP);
pinMode(kapcsoloC, INPUT_PULLUP);
pinMode (led,OUTPUT);
pinMode (encoderA,INPUT);
pinMode (encoderB,INPUT);
digitalWrite(led,LOW);
lcd.begin(16 ,2);
lcd.print("Festőgép");
// Reads the initial state of the outputA
LastState = digitalRead(encoderA);
}
void loop(){
if (digitalRead(kapcsoloA) == LOW){
uzemmodA();}
if (digitalRead(kapcsoloB) == LOW){
uzemmodB();}
if (digitalRead (kapcsoloC) == LOW){
uzemmodC();}
State = digitalRead(encoderA);
if (State != LastState){
if (digitalRead(encoderB) != State) {
Pos ++;}
else {
Pos --;}
LastState = State;}
}
void uzemmodA(){
distance = Pos+(2*pi*R)/N;
lcd.setCursor(0,1);
lcd.print("ertek");
lcd.println(distance);
lcd.println("cm");
lcd.setCursor(0,0);
lcd.print("1.5-1.5 meter");
if (Pos == 8){
V^= 1;
digitalWrite (led,V);
Pos = 0;
distance = (distance +1 );
LastState = State;
}
}
void uzemmodB{
distance = Pos+(2*pi*R)/N;
lcd.setCursor(0,1);
lcd.print("ertek");
lcd.println(distance);
lcd.println("cm");
lcd.setCursor(0,0);
lcd.print("2-2 meter ");
if (Pos == 18){
V^= 1;
digitalWrite (led,V);
Pos = 0;
distance = (distance +1 );
LastState = State;}
}
void uzemmodC{
distance = Pos+(2*pi*R)/N;
lcd.setCursor(0,1);
lcd.print("ertek");
lcd.println(distance);
lcd.println("cm");
lcd.setCursor(0,0);
lcd.print("2-4 meter ");
if (Pos == minPos){
digitalWrite(led,HIGH);}
else{
digitalWrite (led,LOW);
Pos = 0;
distance = (distance +1 );
LastState = State;
}
}
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
Köszönöm valóban az volt a hiba ![](/pic/smile/smile.gif) Pedig ezerszer megnéztem ![](/pic/smile/biggrin.gif)
Abban tudnál segíteni hogy az uzemmodC-ot életre keltsem?
Mert ott két külön méretre kéne reagálnia .
Jogos köszönöm,és elnézést
Kódot mutass! És előtte nyomd meg a Ctrl+T -t hogy mondtam!
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 ![](/pic/smile/smile.gif) ).
(#) |
vyky hozzászólása |
Okt 30, 2018 |
![](/pic/post_ranknd.png) |
/ |
![](/pic/post_rankyd.png) |
|
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. #include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
#define encoderA A2 //enkoder 1
#define encoderB A3 //enkoder 2
int kapcsoloA = 6; //1,5-1,5méter kiosztás
int kapcsoloB = 7; //2-2 méter kiosztás
int kapcsoloC = 8; //2-4 méter kiosztás
int astate = 0;
int bstate = 0;
int cstate = 0;
int led = 10;// pisztolyszelep
int Pos = 0;
int State;
int LastState;
int minPos = 18;//ezt kellene beírni valahogy
int maxPos = 39;//és ezt is
const float pi = 3.14;
byte V = 1;
const int R = 7;//kerék átmérő
const int N = 22;//encodr osztása
float distance = 0;
void setup() {
lcd.begin(16, 2);
pinMode(kapcsoloA, INPUT_PULLUP);
pinMode(kapcsoloB, INPUT_PULLUP);
pinMode(kapcsoloC, INPUT_PULLUP);
pinMode (led, OUTPUT);
pinMode (encoderA, INPUT);
pinMode (encoderB, INPUT);
digitalWrite(led, LOW);
lcd.begin(16 , 2);
lcd.print("Festőgép");
// Reads the initial state of the outputA
LastState = digitalRead(encoderA);
}
void loop() {
if (digitalRead(kapcsoloA) == LOW) {
uzemmodA();
}
if (digitalRead(kapcsoloB) == LOW) {
uzemmodB();
}
if (digitalRead (kapcsoloC) == LOW) {
uzemmodC();
}
State = digitalRead(encoderA);
if (State != LastState) {
if (digitalRead(encoderB) != State) {
Pos ++;
}
else {
Pos --;
}
LastState = State;
}
}
void uzemmodA() {
//if (digitalRead(kapcsoloA)== LOW) {
distance = Pos + (2 * pi * R) / N;
lcd.setCursor(0, 1);
lcd.print("ertek");
lcd.println(distance);
lcd.println("cm");
lcd.setCursor(0, 0);
lcd.print("1.5-1.5 meter");
if (Pos == 8) {
V ^= 1;
digitalWrite (led, V);
Pos = 0;
distance = (distance + 1 );
LastState = State;
}
}
// }
void uzemmodB(){
//if (digitalRead(kapcsoloB)== LOW) {
distance = Pos + (2 * pi * R) / N;
lcd.setCursor(0, 1);
lcd.print("ertek");
lcd.println(distance);
lcd.println("cm");
lcd.setCursor(0, 0);
lcd.print("2-2 meter ");
if (Pos == 18) {
V ^= 1;
digitalWrite (led, V);
Pos = 0;
distance = (distance + 1 );
LastState = State;
}
}
//}
void uzemmodC(){
//if (digitalRead(kapcsoloC)== LOW) {
distance = Pos + (2 * pi * R) / N;
lcd.setCursor(0, 1);
lcd.print("ertek");
lcd.println(distance);
lcd.println("cm");
lcd.setCursor(0, 0);
lcd.print("2-4 meter ");
if (Pos == minPos) {
digitalWrite(led, HIGH);
} else{
digitalWrite (led, LOW);
Pos = 0;
distance = (distance + 1 );
LastState = State;}
}
//}
A hozzászólás módosítva: 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.
Már működik a kód, csak a c uzemmod nem működik. Minden fölös kivettem.
Az A és B tehát rendesen működik? Tekered, számol, és amit akarsz?
Mi az amit rosszul csinál?
Igen az jó. Csak a c-t nem tudom életre kelteni.
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?
A 38-at honnan kellene tudnia a programnak? minPos-ra hivatkozol, nem maxPos-ra...
Igaz, de csak próbálkoztam semmi eredménnyel ![](/pic/smile/sad.gif) A minPos és a maxPos kellene bele.
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.
Ha megnézed az uzemmod-t, akkor látod elkeztem de csak annyit tesz, hogy elszamol3-ig és ott megáll
Estére megnézem, most nem vagyok gépnél
Én is a dokinál ülök, de köszönöm előre.
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
É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.
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.
Szerintem ide nyugodtan írd le, hogy figyelembe vehessük a szempontokat! Így is az információ áramlása szokott a legfőbb gond lenni
|
|