ciao a tutti una semplice domanda:
è compatibile nella programmazione inserire due librerie?
ad esempio:
#include <MegaServo.h>
#include <Servo.h>
oppure entrano in conflitto tra loro??
grazie in anticipo per le risposte.
ciao a tutti una semplice domanda:
è compatibile nella programmazione inserire due librerie?
ad esempio:
#include <MegaServo.h>
#include <Servo.h>
oppure entrano in conflitto tra loro??
grazie in anticipo per le risposte.
includile tutte le librerie necessarie e compila immediatamente,
se vedi errori del tipo "conflicting..."
oppure "previous declaration here..."
allora non sono compatibili.
questo per quanto riguarda il codice.
ma devi essere sempre sicuro di non generare tu incompatibilita',
nel senso che se usi una libreria per comandare un led poi
non puoi usare contemporaneamente un'altra che lo faccia lampeggiare.
Grazie per la risposta,
ho la necessità di pilotare 3 servi, avendo compilato un codice con la lib " #include <Servo.h>" ho scoperto che ne può pilotare solo 2 che funzionano egregiamente ma non il terzo che mi serve come pinza (sto costruendo un braccio)
ho trovato un altra libreria che pilota più servi ma la volevo utilizzare per pilotare solo il servo pinza (per non stare a riscrivere tutto il codice degli altri movimenti).
anche se il controllo del prog non mi da errori quando lo trascrivo non funziona nulla, prese singolarmente i codici invece funzionano.
evidentemente vanno in conflitto, bisogna che riscriva tutto.
grazie
Ciao, smanetto da poco con l'arduino e da quello che ho letto in alcuni post ho capito che l'arduino riesce a comandare soltanto due servi, uno collegato sul pin 9 e l'altro sul 10. Può anche darsi che i post che ho letto sono vecchi e che siano state apportate delle modifiche, quindi magari mi sbaglio. Nonostante questo, ho trovato un modo ulteriore per pilotare due servi senza usare la libreria Servo.h, ti allego lo script che ho trovato e mi scuso con l'autore in quanto non ricordo dove l'ho preso.
Lo script è questo, spero possa tornarti utile:
int servo1 = 7; // collego un servo al pin 7
int servo2 = 6; // collego un servo al pin 6
int myAngle1;
int myAngle2;
int pulseWidth1;
int pulseWidth2;
void servoPulse1 (int servo1, int myAngle1) {
pulseWidth1 = (myAngle1 * 11) + 500; // Converts angle to microseconds
digitalWrite(servo1, HIGH); // Set servo high (turns it on)
delayMicroseconds(pulseWidth1); // Wait a very very small amount
digitalWrite(servo1, LOW); // Set servo low (turns it off)
delay(20); // Typical Refresh cycle of servo (20 ms)
}
void servoPulse2 (int servo2, int myAngle2) {
pulseWidth2 = (myAngle2 * 11) + 500; // Converts angle to microseconds
digitalWrite(servo2, HIGH); // Set servo high (turns it on)
delayMicroseconds(pulseWidth2); // Wait a very very small amount
digitalWrite(servo2, LOW); // Set servo low (turns it off)
delay(20); // Typical Refresh cycle of servo (20 ms)
}
void setup() {
pinMode(servo1, OUTPUT);
pinMode(servo2, OUTPUT);
}
void loop() {
for (myAngle1=0; myAngle1<=180; myAngle1++) {
myAngle1 = 100;
myAngle2 = 90;
servoPulse1(servo1, myAngle1);
servoPulse2(servo2, myAngle2);
}
}
Io ho provato questo script con un servo a rotazione continua ed effettivamente funziona, credo che in questo modo non esiste più la limitazione dei servi ai pin 9 e 10. Ripeto che sono ancora un novellino quindi lascio la parola a chi è più esperto di me, non vorrei causarti dei danni. Spero di averti consigliato bene, comunque prima di procedere aspetta che qualcuno confermi questo metodo poco ortodosso. Saluti
grazie dell'info proverò il tuo prog.
ciao ... vorrei utilizzare arduino come controllo e comando di motori ma per problemi di calcolo vorrei tenere il comando dai motori .. preferibilmente in vb; sostanzialmente comandare i digital pin in output e leggere i valori analogici direttamente da pc.. avevo visto il software firmata in vb e pensavo modificabile a piacere, purtroppo ho acquistato un "mega" e con i strumenti firmata nn posso comandare i pin > de 12
mi potete aiutare