1. exHCClid
  2. Modelbaanautomatisering
  3. vrijdag 06 april 2018
Beste forumbezoeker,
Ik ben een beginnend Aruino gebruiker en heb na wat testjes een programma gemaakt voor het besturen van een lift met 3 verdiepingen.
Met wat hulp van een medegebruiker heb ik het voor elkaar gekregen dat het werkt maar ik moet dan de motor, d.m.v. een drukknop, links of rechtsom laten draaien. Ik heb een opzetje gekregen om dit automatische te laten verlopen en heb dit ingebouwd. Het gedeelte van de motoraansturing komt door de compiler heen maar hij stopt steeds op het bestaande deel met de melding "ButtonState2" does not name a type. Met de handmatige motoraansturing werkte dit deel zo prima. Het uploaden van het bestand lukt niet vandaar dat ik hieronder de gehele list heb geplaatst. Wie kan mij verder helpen?
Alvast bedankt voor de medewerking.
Ad de Laat
[email][/email]

/* Aansturing lift met 3 verdiepingen. (beganegrond, 1e verdieping en 2e verdieping)
* D.m.v. eindschakelaars wordt de motor gestopt.
* Motorsturing d.m.v. L293D
*/
const int verd2 = 7; //Drukknop 2e verdieping naar D7
const int verd1 = 5; // Drukknop 1e verdieping naar D5
const int beg = 4; // Drukknop beganegrond nnar D4
const int relais = 6; // aansturing motor via D6
const int eindstop2 = 3; //Eindschakelaar 2e verdieping D3
const int eindstop1 = 2; //Eindschakelaar 1e verdieping D2
const int beganegr = 8; //Eindschakelaar beganegrond D8
int buttonState2 = 0; //reset drukknop verdieping op 0
int buttonState1 = 0; //reset drukknop verdieping op 0
int buttonState0 = 0; //reset drukknop verdieping op 0
int potPin = 0; //reset stand regelbare weeerstand op 0
int switchPin = 9;
//int enablePin = 10;
int in1Pin = 11; // Aansturing L293D op IN1 vanuit D11
int in2Pin = 12; // Aansturing L293D op IN2 vanuit D12
int X = 0; // maak X=0
int Y = 0; // maak Y=0
int Waardeverd1; // maak digitalewaarde verd1
int Waardeverd2; // maak digitalewaarde verd2
int Waardebeggr; // maak digitalewaarde beg
void setup() {
pinMode(verd2, INPUT); // maak van D7 een input
pinMode(verd1, INPUT); // maak van D5 een input
pinMode(beg, INPUT); // maak van D4 een input
pinMode(relais, OUTPUT); // maak van D6 een output
pinMode(eindstop2, INPUT); // maak van D3 een input
pinMode(eindstop1, INPUT); // maak van D2 een input
pinMode(beganegr, INPUT); // maak van D8 een input
pinMode(Waardeverd1, INPUT); // maak van D5 een input
pinMode(Waardeverd2, INPUT); // maak van D7 een input
pinMode(Waardebeggr, INPUT); // maak van D4 een input
pinMode(in1Pin, OUTPUT); // maak van D11 een output
pinMode(in2Pin, OUTPUT); // maak van D12 een output
pinMode(switchPin, INPUT_PULLUP); // maak van D9 een input

Serial.begin(9600); // zet de seriele monitor op 9600 baut

}
void loop()
{
int speed = analogRead(potPin) / 4; // leest de motorsnelheid uit potmeter /4
boolean reverse = digitalRead(switchPin); // bepaald de richting van de motor
setMotor(speed, reverse); // geeft setmotor de berekende waarden
}
void setMotor(int speed, boolean reverse) // stuurt de motor aan
{

{
int Waardeverd2 = digitalRead(verd2); //zet de digitalewaarden van D6 Waardeverd2
int Waardeverd1 = digitalRead(verd1); //zet de digitalewaarden van D5 Waardeverd1
int Waardebeggr = digitalRead(beg); //zet de digitalewaarden van D4 Waardebeggr

if (beganegr == HIGH){ //waarde bepaling t.b.v. Motoraansturing links of rechtsom
(X=0);}
if (eindstop1 == HIGH){
(X=1);}
if (eindstop2 == HIGH){
(X=2);}
if (Waardebeggr == HIGH){
(Y=0);}
if (Waardeverd1 == HIGH){
(Y=1);}
if (Waardeverd2 == HIGH){
(Y=2);}

if (Y>X){ // Motoraansturing links of rechtsom
(in1Pin=HIGH, in2Pin=LOW);}
if (Y<X){
(in1Pin=LOW, in2Pin=HIGH);}
if (Y==X){
(in1Pin=HIGH, in2Pin=HIGH);}
}
}
//Serial.println(buttonState);
//delay(1);
buttonState2 = digitalRead(eindstop2); // Maakt status drukknop, verdieping 2, digitaal
if (Waardeverd2 == HIGH){ // als D7 is 1
digitalWrite(relais, HIGH); // maak D6 = 1
}else if (buttonState2 == 1){ // als buttonState 2 gelijk is aan 1
digitalWrite(relais, LOW); // maak D6 = 0
}

buttonState1 = digitalRead(eindstop1);
if (Waardeverd1 == HIGH){
digitalWrite(relais, HIGH);
}else if (buttonState1 == 1){
digitalWrite(relais, LOW);
}

buttonState0 = digitalRead(beganegr);
if (Waardebeggr == HIGH){
digitalWrite(relais, HIGH);
}else if (buttonState0 == 1){
digitalWrite(relais, LOW);
}
}
}
Reacties (2)
Geaccepteerd antwoord In Afwachting Moderatie
Hallo Ad,

Wat er fout gaat weet ik even niet, "does not name a type" krijg ik meestal wanneer er ergens iets fout is gegaan met het verwijzen naar een library.
Probeer eens LOW en HIGH in plaats van 0 en 1. misschien dat er ergens niet goed gaat met de integer.
Zal er een nader onderzoek naar doen.

Gr Peter
  1. meer dan een maand geleden
  2. Modelbaanautomatisering
  3. # 1
Geaccepteerd antwoord In Afwachting Moderatie
Ad,

Ik vermoed dat het programma door kopiëren van andere programma's tot stand is gekomen.

Er staan in de void loop erg veel "{".
Als je de "}" en "{" verwijderd in regel 48, 50, 52, 59, 76, 77 en 101

dan krijg je een foutmelding dat setMotor niet als variabele is vastgelegd

als ik nu regel 47 en 49 buiten werking stel (//) dan kan ik het zonder foutmeldingen compileren.

Chek nog eens of alle variabele wel nodig zijn

Gerard
  1. meer dan een maand geleden
  2. Modelbaanautomatisering
  3. # 2
  • Pagina :
  • 1


Er zijn nog geen reacties op dit bericht.
Reageer als een van de eersten op dit bericht!
Nog geen HCC-gebruikersaccount aangemaakt? Klik dan hier.

Inloggen