dab77:
Allora è ancora più semplice, te la cavi con 2 IF.
però perchè usi 4 pin per due pulsanti? basta un pin per pulsante, metti una resistenza di pull-up tipo da 10k (giusto?) tra il pin e i 5V, mentre il pulsante lo metti tra il pin e GND. praticamente quando lo schiacci il pin diventa 0.
per cui fai un:if ( digitalRead(n_pin) == 0) {
chiamata_alla_funzione_movimento()
}
..poi ci sono modi più eleganti, ma questo è il più elementare e comprensibile. Davide.
Si giusto Davide e grazie!
ho fatto proprio così solo che non avevo il codice .
Quindi la tua stringa la dovrei inserire così?Mi da un erroreProva_pulsante_.cpp:20:20: error: invalid suffix "_pin" on integer constant
#define DIR_PIN 7
#define STEP_PIN 5
const int buttonPin = 8; //Setting button number 1 to Pin 2
int buttonState = 1; //Setting button state to offvoid setup() {
pinMode(DIR_PIN, OUTPUT);
pinMode(STEP_PIN, OUTPUT);
}void loop(){
//specifica numero giri e tempo di attesa
if ( digitalRead(8_pin) == 0) {
rotateDeg(-1000, 0.7);
delay(000);
}
}void rotateDeg(float deg, float speed){
//rotate a specific number of degrees (negitive for reverse movement)
//speed is any number from .01 -> 1 with 1 being fastest - Slower is stronger
int dir = (deg > 0)? HIGH:LOW;
digitalWrite(DIR_PIN,dir);int steps = abs(deg)*(1/0.225);
float usDelay = (1/speed) *30;for(int i=0; i < steps; i++){
digitalWrite(STEP_PIN, HIGH);
delayMicroseconds(usDelay);digitalWrite(STEP_PIN, LOW);
delayMicroseconds(usDelay);
}
}