Patrick_M:
non voglio il video, ti giuro che ci credo che non ti funzionava!!!
il problema è dello sketch che hai scritto e non del muovere ad un passo alla volta il motore
CHE E' LA STESSA COSA CHE FA LA LIBRERIA QUANDO LO FAI MUOVERE PER 68*68 PASSI
il motore si muove SEMPRE ad un passo per volta
te lo ripeto, probabilmente il delay(2) che ti avevo messo è esagerato oppure hai fatto qualche altro errore
#include <Stepper.h>
int pulsante0pin=2;
int pulsante1pin=3;
int pulsante2pin=4;
int microswitch0=5;
int microswitch1=6;
int microswitch2=7;
const int stepsPerRevolution = 32;
Stepper myStepper(stepsPerRevolution, 9, 11, 10, 12);
void setup() {
pinMode(pulsante0pin,INPUT);
pinMode(pulsante1pin,INPUT);
pinMode(pulsante2pin,INPUT);
pinMode(microswitch0,INPUT);
pinMode(microswitch1,INPUT);
pinMode(microswitch2,INPUT);
}
void loop() {
if (digitalRead(microswitch0) == HIGH ) { //STATO SWITCH PIANO 0
if (digitalRead(pulsante1pin) == LOW ) { //CHIAMATA P1
while (!digitalRead(microswitch1)) {
myStepper.step(1);
delay(2);
}
} else if (digitalRead(pulsante2pin) == LOW) { //CHIAMATA P2
while (!digitalRead(microswitch2)) {
myStepper.step(1);
delay(2);
}
}
}
else if (digitalRead(microswitch1) == HIGH) {
if(digitalRead(pulsante0pin) == LOW )
{ //chiamata PT
while(!digitalRead(microswitch0)) {
myStepper.step(-1);
delay(2);
}
}
else if(digitalRead(pulsante2pin) == LOW)
{
while(!digitalRead(microswitch2))
{
myStepper.step(1);
delay(2);
}
}
}
else if(digitalRead(microswitch2) == HIGH)
{
if(digitalRead(pulsante0pin) == LOW)
{
while(!digitalRead(microswitch0)) {
myStepper.step(-1);
delay(2);
}
}
else if (digitalRead(pulsante1pin) == LOW)
{
while(digitalRead(microswitch1))
{
myStepper.step(-1);
delay(2);
}
}
}
}
tralasciando il delay(2)
infatti lo vedi che manca l'istruzione
myStepper.setSpeed(600)
che ti avevo detto di aggiungere come ultima riga del setup
ma un minimo di verifica no?
e poi ti avevo anche detto di abbassare appunto il delay(2) con delayMiscoseconds(10) e probabilmente anche questo è inutile anzi sicuramente si potrebbe levare qualsiasi delay, ci pensa la libreria ad aggiungerli
riproverò sinceramente non Avevo notato il set.Speed... speriamo sia quello
Patrick_M:
infatti lo vedi che manca l'istruzione
myStepper.setSpeed(600)
che ti avevo detto di aggiungere come ultima riga del setup
ma un minimo di verifica no?
e poi ti avevo anche detto di abbassare appunto il delay(2) con delayMiscoseconds(10) e probabilmente anche questo è inutile anzi sicuramente si potrebbe levare qualsiasi delay, ci pensa la libreria ad aggiungerli
testato... risolto il problema della velocità sale e scende come faceva con il mio sketch però ha un'altro problema
l'ho simulato senza cabina chiudendo e aprendo i microsw a mano e spingendo i pulsanti
fa una cosa strana che non so come sistemarla:
premendo il pulsante il motore non va in funzione finché non il microsw di piano faccio esempio piano0 MicroSw0 HIGH
finché questo non diventa LOW l'ascensore non si muove.....
ciò nella realtà con la cabina non succederà mai perché questa starà sempre al piano 0 e spingerà sempre il microsw0 quindi ti troverai sempre nel caso0 (MICROSW0 HIGH) e il sistema non funziona perché spingendo il pulsante non fa niente finche il microsw0 diventa LOW aperto.....
mi sono spiegato?
ti sei spiegato ma vuol dire che hai fatto qualche errore nello sketch
if (digitalRead(microswitch0) == HIGH ) { //se PIANO 0
if (digitalRead(pulsante1pin) == LOW ) { // se CHIAMATA P1
while (!digitalRead(microswitch1)) { // fino a che switch piano1 è off
myStepper.step(1); // fai un passo
}
}
non centra nulla lo switch di piano 0 (una volta che è entrato nell'if)
strano.....
e avevo un'altro problema per alimentare il motore passo passo in modo esterno da arduino come posso fare?
5v max corrente 400mA ?
perché volevo liberare i 5v di arduino per i pulsanti e microsw
Tassativo non alimentare motori con Arduino!
ti prendi un normalissimo alimentatore di quelli per ricaricare i cellulari che abbia in uscita (almeno) 600 mA e lo usi per il motore
ah perfetto.... oppure potrei sfruttare la porta usb per arduino
usare i 5v per microsw led e pulsanti
e sfruttare VIN per il motore che ne pensi ?
no, vin per il motore no! Meglio alimentarlo a parte, tutto il resto si
il problema è che non so come alimentarlo
perché da quello che ho letto vuole 5v max 400mA
le pile arrivano a 4.8V e ok ma il problema è l'amperaggio che stiamo sopra i 550mA come posso fare?
che pile hai?
cioè: 550mAh sono un valore strano per le pile
comunque non è un problema se la CAPACITA' delle pile è superiore all'ASSORBIMENTO del carico
cambiano anche le unità di misura.........
spiega bene che pile hai
vuole 5v e 400mA max
devo ancora cercarle su internet le pile ma ho visto che vanno tutti dai 4.8v e minimo 550mAh ma ho paura che si fonda il motore
Il motore si fonda sui campi magnetici, tranquillo
Le tue fondazioni in elettrotecnica invece?
quindi Va bene qualsiasi amperaggio ?
Quanto deve durare la dimostrazione?
Compreso il tempo di collaudo e sviluppo?
max max 5m penso la dimostrazione ma a tenermi largo perché da quello che ho capito tutta la tesina deve durare 10-12m
il motore hai capito quale ho?
No, non so che motore hai
Per un quarto d'ora a 400 mA ti bastano pile da 100 mAh
Consiglio: stai largo, sono sicuro che dovrai provare parecchio
Stai molto largo, perché mi sembra che il tuo debito tecnico sia elevato
io batterie di queste tipo non le trovo
Allora Santo alimentatore. ..