Aiuto parabola motorizzata

buongiorno a tutti
sto scrivendo un sketch per motorizzare una parabola con una bussola che indichi la posizione sul display
il mio problema è che quando compilo mi da una serie di errori che li capisco più o meno ma non saprei come risolverli
ho una tastiera collegata su un pin analogico

non è tutta farina del mio sacco,ho preso da più sketch esistenti trovati su internet
questo è il sketch che ho scritto fin ora:

#include <LiquidCrystal.h>
#include <EEPROM.h>
#define inCom A0      // pin in pulsanti
#define inPot A1      // pin in potenziometro elevazione 
#define inMot 13      // pin motore acceso
#define motEa 10      // pin motore elevazione 1
#define motEb 11      // pin motore elevazione 2
#define motDa 12      // pin motore orientamento 1
#define motDb 13      // pin motore orientamento 2


LiquidCrystal lcd(7, 6, 5, 4, 3, 2); //inizializza libreria display
float dirIn = 0; // lettura bussola in gradi
int dirLock = 0; // direzione ok
float compass = 0; // valore orientamento (cmps03)
int manButton;     //ingresso comandi manuali



void setup() {
pinMode(inPot, INPUT); // ingresso potenziometro elevazione
pinMode(inCom, INPUT); //ingresso tastiera
pinMode(8, INPUT); // ingresso bussola
pinMode(motEa, OUTPUT); //motore elevazione
pinMode(motEb, OUTPUT);
pinMode(motDa, OUTPUT); //motore orientamento
pinMode(motDb, OUTPUT);


}

void loop() {
int dirHB = EEPROM.read(0); // legge direzione dalla cella 0
compass = pulseIn(8, HIGH); // lettura bussola
dirIn = (compass/1000-1)*10.15; //trasforma in gradi
manButton = analogRead(inCom);   // valori comandi manuali immessi su A0

//valori comandi manuali
{
if (manButton < 50) ferma();   // arresta motori
if (manButton > 150 && manButton < 250) chiudi();    // 200 chiude antenna
if (manButton > 250 && manButton < 350) alza();      // 300 alza antenna
if (manButton > 350 && manButton < 450) abbassa();    // 400 abassa antenna
if (manButton > 450 && manButton < 550) orario();     // 500 rotazione oraria
if (manButton > 550 && manButton < 650) antiorario();  // 600 rotazione antioraria
{
if (digitalRead(inMot) == HIGH) chiude();       // chiude a motore acceso
}
}


//**********   FUNZIONI MOTORI   **********/
void alza(){
digitalWrite(motEb, HIGH);
digitalWrite(motEa, LOW);
}
//****************************
void abbassa(){
digitalWrite(motEb, HIGH);
digitalWrite(motEa, LOW);
}
//****************************
void orario(){
digitalWrite(motDb, HIGH);
digitalWrite(motDa, LOW);
}
//****************************
void antiorario(){
digitalWrite(motDa, HIGH);
digitalWrite(motDb, LOW);
}
//****************************
void ferma(){
digitalWrite(motDa, HIGH); 
digitalWrite(motDb, HIGH);
digitalWrite(motEb, HIGH);        
digitalWrite(motEa, HIGH);
}
//****************************
void chiudi(){                   // chiude antenna da tasto
}
//****************************
void chiude(){                   // chiude antenna motore acceso
}
}

mi seleziona la riga con if e ferma e mi dice:

Arduino:1.6.5 (Windows 7), Scheda:"Arduino/Genuino Uno"

sketch_parabola_motorizzata_mio.ino: In function 'void loop()':
sketch_parabola_motorizzata_mio:41: error: 'ferma' was not declared in this scope
sketch_parabola_motorizzata_mio:48: error: 'chiudi' was not declared in this scope
sketch_parabola_motorizzata_mio:49: error: 'alza' was not declared in this scope
sketch_parabola_motorizzata_mio:50: error: 'abbassa' was not declared in this scope
sketch_parabola_motorizzata_mio:51: error: 'orario' was not declared in this scope
sketch_parabola_motorizzata_mio:52: error: 'antiorario' was not declared in this scope
sketch_parabola_motorizzata_mio:54: error: 'chiude' was not declared in this scope
sketch_parabola_motorizzata_mio:60: error: a function-definition is not allowed here before '{' token
sketch_parabola_motorizzata_mio:65: error: a function-definition is not allowed here before '{' token
sketch_parabola_motorizzata_mio:70: error: a function-definition is not allowed here before '{' token
sketch_parabola_motorizzata_mio:75: error: a function-definition is not allowed here before '{' token
sketch_parabola_motorizzata_mio:80: error: a function-definition is not allowed here before '{' token
sketch_parabola_motorizzata_mio:87: error: a function-definition is not allowed here before '{' token
sketch_parabola_motorizzata_mio:90: error: a function-definition is not allowed here before '{' token
sketch_parabola_motorizzata_mio.ino: At global scope:
sketch_parabola_motorizzata_mio:103: error: expected declaration before '}' token
'ferma' was not declared in this scope

Hai incluso tutte le funzioni all'interno del loop e invece devono stare fuori... togli una graffa chiusa in fondo e mettila prima delle funzioni.

sketch_parabola_motorizzata_mio:60: error: a function-definition is not allowed here before '{' token

Significa che funzioni non possono essere definite dentro altre funzioni.
Devi chiudere la loop() prima di definire le altre funzioni.

sketch_parabola_motorizzata_mio:41: error: 'ferma' was not declared in this scope

visto che la definizione di funzioni non é permessa dentro altre funzioni non esiste la funzione "ferma" ecc

Ciao Uwe

Ledib:
buongiorno a tutti

Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento se non lo hai già fatto: Regolamento
Qui una serie di link utili, non inerenti al tuo problema:

Perfetto!!grazie mille!!ora funziona :slight_smile: