Ciao
in questa applicazione ho una scheda arduino per controllare delle elettrovalvole per aria compressa, attraverso 74hc595+ULN2803, quando carico uno sketch le uscite di arduino passano da H a L più di una volta creando un temporaneo e anomalo funzionamento dell'applicazione. Sapete se c'è un modo per evitare questo senza togliere aria all'impianto.
stefa24:
quando carico uno sketch le uscite di arduino passano da H a L più di una volta creando un temporaneo e anomalo funzionamento dell'applicazione. Sapete se c'è un modo per evitare questo senza togliere aria all'impianto.
Durante il caricamento dello sketch tutti i pin di Arduino vanno in stato di alta impedenza, se non hai previsto delle resistenze esterne di pullup/pulldown su i pin che pilotano le utenze è facile che queste commutano in modo random.
#define FineCorsa 3 //inductive sensor
#define sensoreAngolo 2 //pin encoder canale 0
#define pulsante 6 //pin interruttore
#define pin_carpet 7 //pin joined to carpet pin
int dataPin = 11; //Pin connected to DS of 74HC595 14
int latchPin = 8;//Pin connected to ST_CP of 74HC595 12
int clockPin = 12;//Pin connected to SH_CP of 74HC595 11
const int angolo_1 = 0; //andata
const int angolo_11 = 10; //andata
const int angolo_2 = 28; //andata
const int angolo_21 = 50; //andata
const int angolo_3 = 132; //andata
const int angolo_4 = 169; //ritorno
const int angolo_41 = 175; //ritorno
const int angolo_6 = 233; //ritorno
const int angolo_61 = 250; //ritorno
byte var1;
byte var2;
byte var[16] =
{
B00000000,// A in
B00000000,// A out
B00000000,// B in
B00000000,// B out
B00000000,// C in
B00000000,// C out
B00000000,// D in
B00000000,// D out
B00000000,// griper_1 in
B00000000,// griper_1 out
B00000000,// griper_2 in
B00000000,// griper_2 out
B00000000,// push_1 in
B00000000,// push_1 out
B00000000,// push_2 in
B00000000,// push_2 out
};
byte stato_pulsante;
byte stato_ciclo;
byte k;
char fila;
int ritardo;
int ritardo_1;
byte fase;
byte stato;
int angolo;
long tempo_0;
int delta_t;
void setup()
{
pinMode(sensoreAngolo, INPUT_PULLUP); //interrupt
attachInterrupt(0, ciclo, RISING);
pinMode(FineCorsa, INPUT_PULLUP);
// attachInterrupt(0, stepper, FALLING);
pinMode(dataPin, OUTPUT); //Configure each IO Pin
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
digitalWrite(latchPin, LOW);
// var1=B00000000;
//var2=B00000000;
pinMode(pin_carpet, OUTPUT);
digitalWrite(pin_carpet, HIGH);
pinMode(pulsante, INPUT_PULLUP);
stato_pulsante = 0;
stato = 0;
angolo = 0;
fila = 'p';
fase = 0;
k = 1;
ritardo = 500;
ritardo_1 = 3000;
pinMode(13, OUTPUT);
digitalWrite(13,LOW);
Serial.begin(115200);
Serial.println("Pronto");
tempo_0 = 0;
delta_t = 0;
}
grazie per le risposte
come metto queste resistenze, le posso mettere tutte UP o DOWN oppure le devo mettere a seconda di come ho settato i pin nel setup()?
La programmazione avviene sui pin SPI che hai collegato allo shift register. E' normale che switchano durante la programmazione.
Usa altri pin e non 10,11,12,13.
flz47655:
La programmazione avviene sui pin SPI che hai collegato allo shift register. E' normale che switchano durante la programmazione.
Usa altri pin e non 10,11,12,13.
Se usa il bootloader quei pin non hanno nulla a che vedere con la programmazione, eventualmente spostare solo il pin 13, se usato, perché è quello del led che lampeggia dopo un reset.
astrobeed:
Se usa il bootloader quei pin non hanno nulla a che vedere con la programmazione, eventualmente spostare solo il pin 13, se usato, perché è quello del led che lampeggia dopo un reset.
Si vero, visto che però non ha specificato se carica sketch da USB o no, meglio avvertirlo.
poi se usa 74hc595+ULN2503, ipin di uscita del ULN sono casuali e non controllati da Arduino. Devi mettere a +5V con una resistenza il pin OE (pin 13 del 595).
Ciao Uwe
ciao
da quello che mi dite e da quello che ho letto sul datasheet, il pin OE posto H manda OFF lo shift register ma poi non lo devo devo mandare L, per far lavorare lo shift register?
stefa24:
ciao
da quello che mi dite e da quello che ho letto sul datasheet, il pin OE posto H manda OFF lo shift register ma poi non lo devo devo mandare L, per far lavorare lo shift register?
stefano
se metti una resistenza pullup quando l' uscita Arduino é a alta impedenza il segnale é HIGH e dopo, quango il pin é definito come uscita il segnale é quello che piloti con l' uscita.
Ciao Uwe
ciao
quindi metto OE alto con la resistenza e poi lo connetto ad un pin di arduino settato come output e che mando L nel setup, mi serve un 4° filo come immaginavo