Prima di tutto salve a tutti!!!
Avviso che sono a le prime armi con l'ide di arduino ma ho un po esperienza con l'ambiente mplab e i pic quindi piu o meno credo di non aver fatto errori di scrittura del codice.
Al compilare il codice ricevo il seguente errore: desktop/arduino/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/../../../../avr/lib/avr5/crtm328p.o:(.init9+0x0): undefined reference to `main'
Utilizzo L'arduino uno e come sistema operativo win 7, se puo servire.
Il mio è un progetto che portero' come tesina d'esame, in pratica l'arduino comanda tramite segnale PWM un L293 (un driver a ponte H) il quale è collegato a un motorino DC, questo fa muovere una cabina.La posizione della cabina è rilevata da pulsanti chiamati nel programma tastpos, le altri parti del programma sono led e display di posizione.
ecco lo sketch
byte pwm;
int ledpos3 = A0;
int ledpos2 = A1;
int ledpos1 = A2;
int tastpos1 = A3;
int tastpos2 = A4;
int tastpos3 = A5;
int tastpiano1 = 13;
int tastpiano2 = 12;
int tastpiano3 = 11;
//writedisp=
//DISPLAY!!
void setup() {
pinMode(ledpos3, OUTPUT); //LED POSIZIONE
pinMode(ledpos2, OUTPUT);
pinMode(ledpos1, OUTPUT);
pinMode(tastpos1, INPUT); //TASTI POSIZIONE
pinMode(tastpos2, INPUT);
pinMode(tastpos3, INPUT);
pinMode(tastpiano1, INPUT); //TASTI SCELTA PIANO
pinMode(tastpiano2, INPUT);
pinMode(tastpiano3, INPUT);
pinMode(9, OUTPUT); //PWM
pinMode(8, OUTPUT);
pinMode(7, OUTPUT); //DISPLAY
pinMode(6, OUTPUT);
pinMode(5, OUTPUT);
pinMode(4, OUTPUT);
pinMode(3, OUTPUT);
pinMode(2, OUTPUT);
pinMode(1, OUTPUT);
pinMode(0, OUTPUT);
if (digitalRead(tastpos1) == HIGH){ //INIZIALIZZAZIONE LED
digitalWrite(ledpos1, HIGH); //E DISPLAY
//DISPLAY 1 PRIMO PIANO
digitalWrite(7, LOW);
digitalWrite(6, LOW);
digitalWrite(5, LOW);
digitalWrite(4, HIGH);
digitalWrite(3, LOW);
digitalWrite(2, LOW);
digitalWrite(1, HIGH);
digitalWrite(0, LOW);
}
if (digitalRead(tastpos2) == HIGH) {
digitalWrite(ledpos2, HIGH);
//DISPLAY A 2 SECONDO PIANO
digitalWrite(7, HIGH);
digitalWrite(6, LOW);
digitalWrite(5, HIGH);
digitalWrite(4, HIGH);
digitalWrite(3, HIGH);
digitalWrite(2, HIGH);
digitalWrite(1, LOW);
digitalWrite(0, LOW);
}
if (digitalRead(tastpos3) == HIGH) {
digitalWrite(ledpos3, HIGH);
//DISPLAY A 3 TERZO PIANO
digitalWrite(7, HIGH);
digitalWrite(6, LOW);
digitalWrite(5, HIGH);
digitalWrite(4, HIGH);
digitalWrite(3, LOW);
digitalWrite(2, HIGH);
digitalWrite(1, HIGH);
digitalWrite(0, LOW);
}
}
void avanti(byte pwm){
digitalWrite(8, HIGH);
analogWrite(9, (255-pwm));
}
void indietro(byte pwm) {
digitalWrite(8, LOW);
analogWrite(9, pwm);
}
void fermo() {
digitalWrite(8, LOW);
digitalWrite(9, LOW);
}
//REGOLAZIONE FUNZ MILLS() E REGOLAMENTO TEMPO PER
//VEDERE ORDINE:DISPLAY, TASTI, MOTORE
void loop(){ //STABILIRE VALORE PWM!!!!
if(digitalRead(tastpiano1) == HIGH) { //SE PREMO PRIMO PIANO
if(digitalRead(tastpos1) == HIGH) { //se la cabina è al primo piano
fermo(); //stop
}
if(digitalRead(tastpos2) == HIGH) { //se la cabina è al secondo piano
while(digitalRead(tastpos1) == HIGH) { //mentre tastoposizione1 non sia HIGH
indietro(pwm); //vai indietro
}
delay(1000); //aspetta posizione centrale cabina
fermo(); //stop
}
if(digitalRead(tastpos3) == HIGH) { //se la cabina è al terzo piano
while(digitalRead(tastpos1) == HIGH) { //mentre tastoposizione 1 non sia HIGH
indietro(pwm); //vai indietro
}
delay(1000); //aspetta posizione centrale cabina
fermo(); //stop
}
} //FINE FUNZIONE PRIMO PIANO
if(digitalRead(tastpiano2) == HIGH) { //SE PREMO SECONDO PIANO
if(digitalRead(tastpos1) == HIGH) { //se la cabina è al primo piano
while(digitalRead(tastpos2) == HIGH) { //mentre tastoposizione2 non sia HIGH
avanti(pwm); //vai avanti
}
delay(1000); //aspetta posizione corretta
fermo(); //stop
}
if(digitalRead(tastpos2) == HIGH) { //se la cabina è al secondo piano
fermo(); //stop
}
if(digitalRead(tastpos3) == HIGH) { //se la cabina è al terzo piano
while(digitalRead(tastpos2) == HIGH) { //mentre tastoposizione non sia HIGH
indietro(pwm); //vai indietro
}
delay(1000); //aspetta 1 sec
fermo(); //stop
}
} //FINE FUNZIONE SECONDO PIANO
if(digitalRead(tastpiano3) == HIGH) { //SE PREMO TERZO PIANO
if(digitalRead(tastpos1) == HIGH) { //se la cabina è al primo piano
while(digitalRead(tastpos3) == HIGH) { //mentre tastoposizione3 non sia HIGH
avanti(pwm); //vai avanti
}
delay(1000); //aspetta 1sec
fermo(); //stop
}
if(digitalRead(tastpos2) == HIGH) { //se la cabina è al secondo piano
while(digitalRead(tastpos3) == HIGH) {
avanti(pwm);
}
delay(1000);
fermo();
}
if(digitalRead(tastpos3) == HIGH) { //se la cabina è al terzo piano
fermo(); //stop
}
} //FINE FUNZIONE TERZO PIANO
}
Ho cercato su google ma niente di niente su questo errore...