realizzazione di un ascensore a 3 piani

quando parlavo di debito tecnico sapevo di cosa parlavo
comunque, lo OP adesso ha dei problemi impellenti:

  1. capire se dal punto di vista elettrico fuziona ancora tutto
  2. revisionare in fretta il programma
    Come ho già detto io per la seconda parte NON ci sarò, se uno vuole presentare un progetto con arduino almeno deve saper programmare
    e anche la prima sarebbe giusto lasciar stare, ma voglio dare prova di buona volontà
    per lo OP:
    hai un tester, e lo sai usare?

Standardoil:
quando parlavo di debito tecnico sapevo di cosa parlavo
comunque, lo OP adesso ha dei problemi impellenti:

  1. capire se dal punto di vista elettrico fuziona ancora tutto
  2. revisionare in fretta il programma
    Come ho già detto io per la seconda parte NON ci sarò, se uno vuole presentare un progetto con arduino almeno deve saper programmare
    e anche la prima sarebbe giusto lasciar stare, ma voglio dare prova di buona volontà
    per lo OP:
    hai un tester, e lo sai usare?

si ho un tester e si penso di saperlo usare

che arduino hai?
partiamo dal presupposto che hai una UNO
scollega tutto (ma TUTTO)
metti lo usb, e misura
tra gnd e 5v
tra gnd e 3v3
e vediamo se abbiamo qualcosa
poi metti uno scketch semplice
del tipo

void setup (void){}
void loop(void){

for (byte i=2; i<19; i++){
pinMode(i,OUTPUT);
digitalWrite(i, !digitalRead(i));
}
delay(250);
}

che ogni quarto di secondo alza e abbassa tutte le uscite, saltando la seriale
dovresti vedere col tester che le uscite da 2 a 19 oscillano all'unisono
poi andiamo avanti

Un'altra prova, se si ha un alimentatore 9V, è quella di alimentare Arduino dal jack o dal terminale Vin (lasciando scollegato l'USB), e misurare di nuovo i 5 e i 3.3V, così scopriamo se anche il regolatore 5V è ancora buono.

Alla fine di tutte queste prove meglio caricare il programma base blink per scongiurare problemi alle uscite quando si ricollega il resto.

ogni quarto di secondo alza e abbassa tutte le uscite

Provando con un LED non ci sono problemi a vedere il lampeggio, con un tester non vorrei che le cifre variassero troppo rapidamente, metterei un delay di 1000ms invece che 250.

Sì, giusto, un led rosso con una resistenza da....
e qui un minimo di teoria, dai che lo OP ne tiene di bisogno
la tensione ( e se leggo voltaggio ti stronco, sia chiaro)
la tensione o differenza di potenziale tra gnd e le uscite di arduino vale 5V
la tensione di lavoro di un Led rosso è circa 1,5V
la corrente di un led standard potrebbe essere 10 mA, ma per vedere se si accende anche 5 o 2 vanno bene
dalla legge di Ohm sappiamo che 5-1.5-IR=0
doce 5 è la ddp totale, 1,5 la caduta sul diodo e la caduta sulla resistenza si calcola dal prodotto corrente (imposta) e resistenza (ignota)
ovvero I
R=3.5
posta I=0.005 (5 milliAmpere) si ha R=700 Ohm
che NON è un valore normalizzato, quindi si sceglie il valore normalizzato più vicino (a scelta se in alto o in basso) ovvero 820 per tenere la corrente più bassa oppure 680 per alzare un poco la corrente
e poi si fa (ma si deve fare sempre e veramente) un calcolo di verifica, tenendo presente il valore estremo della tolleranza della resistenza, se prendi 680 in E12 al 10% potrebbe essere al minimo 610ohm circa
che fa una corrente nel caso peggiore di 3.5/610, meno di 6 milliampere, OK approvato
ecco come devi calcolare la resistenza del diodo

domani faccio tutti questi test e vi aggiorno!
Grazie del aiuto

dal punto di vista elettrico funziona ancora tutto

legge di Ohm sappiamo che 5-1.5-I*R=0

E questo dovrebbe aiutare un eventuale utente che passa di qui ?

Propongo ban di una settimana per tentativo di confusione aggravato da futili motivi :stuck_out_tongue_closed_eyes: :stuck_out_tongue_closed_eyes: :stuck_out_tongue_closed_eyes:

questi sono i nuovi collegamenti alimentando arduino dal jack (5v1A)
usando VIN(anche se non lo mostro) per il motore
ed il resto come in figura tralasciando per ora i led che inserirò al momento che funzioni tutto
il problema è che con le resistenza non fa nulla....
levandole ho i stessi problemi di prima diciamo fa 2 chiamate e si blocca tutto.....

Lo sai che se alimenti Arduino attraverso il Jack, con 5v, sul Vin hai poco più di 4V e sul pin 5V di arduino è ancora più bassa ?

Ma una foto di quei finecorsa ce l'hai ?

testato:
E questo dovrebbe aiutare un eventuale utente che passa di qui ?

Propongo ban di una settimana per tentativo di confusione aggravato da futili motivi :stuck_out_tongue_closed_eyes: :stuck_out_tongue_closed_eyes: :stuck_out_tongue_closed_eyes:

cosa non ti è chiaro della legge di ohm?
Giorgio Simone Ohm così la aveva scritta:
La somma (algebrica) delle forze elettrotromotrici e delle cadute di tensione in un circuito elettrico è pari a zero
Se si rischia il ban per citare una legge di natura, a tutti quelli che seguono Lavoisier e respirano ossigeno che gli farai?

eccoli

Schermata 2018-06-19 alle 17.00.03.png

Fai una foto di come li hai collegati, che vediamo

Standardoil:
cosa non ti è chiaro della legge di ohm?
Giorgio Simone Ohm così la aveva scritta:
La somma (algebrica) delle forze elettrotromotrici e delle cadute di tensione in un circuito elettrico è pari a zero
Se si rischia il ban per citare una legge di natura, a tutti quelli che seguono Lavoisier e respirano ossigeno che gli farai?

Se improvvisamente non riesci più ad entrare sul forum significa che sono riuscito a convincere Massimo a farmi Mod :stuck_out_tongue_closed_eyes:

simonsdec:
questi sono i nuovi collegamenti alimentando arduino dal jack (5v1A)
ed il resto come in figura tralasciando per ora i led che inserirò al momento che funzioni tutto
il problema è che con le resistenza non fa nulla....
levandole ho i stessi problemi di prima diciamo fa 2 chiamate e si blocca tutto.....

Dal jack si entra con 9V.

Se si ha già un'alimentazione stabilizzata a 5V, si entra diretti sul terminale 5V.

La bassa tensione che deriva dall'entrare con 5V dal jack, è già da sola sufficiente a creare problemi.

Ma in più... non so da quanto sono le resistenze di pulldown, se sono da 220Ω come nel disegno allora le tre di sinistra (collegate ai pulsanti normalmente chiusi) sono già sufficienti ad assorbire più di 50mA (un'esagerazione in ogni caso, ma con l'alimentazione messa male ancora peggio).

E mancano sempre i condensatori di debounce di cui si parlava al post #84, la cui assenza potrebbe generare i famosi comandi multipli a raffica ad ogni azionamento di pulsanti e finecorsa.

testato:
Se improvvisamente non riesci più ad entrare sul forum significa che sono riuscito a convincere Massimo a farmi Mod :stuck_out_tongue_closed_eyes:

e perche? cosa ho fatto di male?
lo OP ha evidentemente dei debiti teorici, che ho cominciato a colmare
vuoi proseguire tu?
Poi, per me, fai pure, lo spessore di una persona si vede anche dal tipo di minacce che fa

Mi fai un favore ?

Me lo colleghi in questo modo

e poi provi ad usare questo sketch

#include <Stepper.h>

int Puls_PT = 2;
int Puls_1P = 3;
int Puls_2P = 4;
int SW_PT = 5;
int SW_1P = 6;
int SW_2P = 7;

#define Steps 32
Stepper small_stepper(Steps, 9, 11, 10, 12);

int piano = -1 ;
int piano_che_chiama = -1 ;
int velocita = 500 ; // Aumentare fino a 700 se se vuole piu' veloce
int a = 0 ;

void setup() {
  pinMode(SW_PT, INPUT_PULLUP); //  piano terra
  pinMode(SW_1P, INPUT_PULLUP); //  primo paino
  pinMode(SW_2P, INPUT_PULLUP); //  secondo paino
  pinMode(Puls_PT, INPUT_PULLUP); // chiamata piano terra
  pinMode(Puls_1P, INPUT_PULLUP); //  chiamata primo piano
  pinMode(Puls_2P, INPUT_PULLUP); //  chiamata secondo piano
  Serial.begin(9600);

  // test iniziale per sapere a quale piano si trova
  if (digitalRead(SW_PT) == LOW ) piano = 0 ;
  if (digitalRead(SW_1P) == LOW ) piano = 1 ;
  if (digitalRead(SW_2P) == LOW ) piano = 2 ;
  if (piano < 0) {
    // deve muovere il motore fino a che non trova un piano
    Serial.println("L'ascensore non e' in nessun piano ");
  }
  else {
    Serial.print("L'ascensore e' al piano ");
    Serial.println(piano);
  }
}

void loop() {
  piano_che_chiama = piano;
  if (digitalRead(Puls_PT) == LOW ) piano_che_chiama = 0 ;
  if (digitalRead(Puls_1P) == LOW ) piano_che_chiama = 1 ;
  if (digitalRead(Puls_2P) == LOW ) piano_che_chiama = 2 ;
  if ( piano_che_chiama > piano ) {
    a = 1 ;
    sali(piano_che_chiama );
  }
  if ( piano_che_chiama < piano ) {
    a = 1 ;
    scendi(piano_che_chiama );
  }
}

void sali(int valore ) {
  Serial.print("E' stato chiamato dal piano ");
  Serial.println(piano_che_chiama);
  Serial.print("Si muovera' fino a che non scatta il finecorsa del piano ");
  Serial.println(piano_che_chiama);
  small_stepper.setSpeed(velocita);
  while ( a == HIGH ) // Aspetta che venga premuto il finecorsa
  {
    if (valore == 0 )   a = digitalRead(SW_PT) ;
    if (valore == 1 )   a = digitalRead(SW_1P) ;
    if (valore == 2 )   a = digitalRead(SW_2P) ;
    small_stepper.step(1);
  }
  piano = piano_che_chiama ;
  Serial.print("Ora e' al piano ");
  Serial.println(piano);
  Serial.println();
}

void scendi(int valore ) {
  Serial.print("E' stato chiamato dal piano ");
  Serial.println(piano_che_chiama);
  Serial.print("Si muovera' fino a che non scatta il finecorsa del piano ");
  Serial.println(piano_che_chiama);
  small_stepper.setSpeed(velocita);
  while ( a == HIGH ) // Aspetta che venga premuto il finecorsa
  {
    if (valore == 0 )   a = digitalRead(SW_PT) ;
    if (valore == 1 )   a = digitalRead(SW_1P) ;
    small_stepper.step(-1);
  }
  piano = piano_che_chiama ;
  Serial.print("Ora e' al piano ");
  Serial.println(piano);
  Serial.println();
}

io azzardo scommessa:
con questo progetto abbiamo finito......