start /logooff sketch arduino in windows..

salve ragazzi avrei bisogno di un vostro aiuto...io ho realizzato questo elevatore con un servoattuatore della firgelli

questo sara' usato in un computer...pero' vorrei che l'elevatore si alzasse all accensione del pc e si abbassasse nello spegnimento di windows .ho scritto un piccolo sketch usando la libreria servo...e lo sketch funziona ...ne ho scritti due uno pistone su e uno pistone giu...
come posso fare per fare cio'?potete aiutarmi?
grazie in anticipo

Non ho capito il problema... lo hai realizzato oppure no lo sketch? :sweat_smile:

leo72:
Non ho capito il problema... lo hai realizzato oppure no lo sketch? :sweat_smile:

Ma sopratutto non serve Arduino, è un banale azionamento puramente elettromeccanico con rele e fine corsa.

questo servo attuatore della firgelli ha una propria scheda di controllo, gestibile tramite un proprio software di controllo.ma ha delle pecche tutte le volte devo settarlo.... mentre con arduino scritto lo skech mi rimane tutto cosi com'e.... ho usato l uacita 3 arduino collegata all ingresso del input della scheda firgelli....e il negativo che va al neg dell altra scheda...quello che io vorrei capire e se c e un modo per far funzionRe questo scketch all accensione e allo spegnimento del pc.... ho provato a seguire delle guide ma il software arduino non si avvia...
arduino resta collegato al pc tramite usb...
in pratica premo on del pc parte win e nel frattempo si alza questo elevatore viceversa spengo il pc quindi win , l elevatore va giu e quindi si chiude win...

Il punto difficile é che vuole t-rex é che la sua meccanica si abbassi al spegnimento del PC.
Il PC ha 2 tensioni di 5V. Quella ufficiale che puó dare alcune decine di ampere e una standby che da da 1 a 2A. A secondo delle possiblitá della scheda madre la USB puó essere alimentata da una o dalla altra tensione.

Il movimento su e giú puó essere trigerato dalla tensione 5V normale e l'alimentazione avviene dai 5V standby. Cosí il movimento di rientro avviene dopo lo shutdowm del SO e del spegnimento del PC
Il tutto ovviamente non funziona se al PC viene tolto l' aliemntazione di brutto.

Ciao Uwe

Quoto Uwe.

il dispositivo deve funzionare all'accensione/spengimento del PC. Isolerei pertanto la gestione dal sistema operativo, proprio per i motivi detti da Uwe. Quindi alimentare l'Arduino dai 5V (tramite pin 5V) o dai 12V (sulla presa jack) e non dalla porta USB: non so Windows, ma Linux apre e diverse volte la connessione sulle porte USB durante il boot per vedere se c'è qualcosa di collegato, e questo resetta l'Arduino.

leo72:
Quoto Uwe.

Al di la della questione controllo attuatore il modo più semplice è rilevare la presenza o meno del 12V su un connettore per dischi IDE, oppure da un connettore per ventole, se c'è la tensione viene fatto estendere il pistone, se manca si riporta in posizione di riposo.
Va da se che il sistema deve essere alimentato a parte perché collegare un carico induttivo come un pistone elettromeccanico direttamente alla alimentazione di un pc non è una buona idea.

si quelli che dite voi è esatto ma come si fa per caricare lo scketch creato in arduino? bisogerebbe fare , correggetemi se dico cabolate
se vi e tensione 5 v su arduino ( perche il servo attuatore e alimentato a 12 v)tira su il pistone se non vi e tensione tira giu il pistone... si dovrebbe riscrivere il tutto...
da quello che ho trovato in rete dicono che win puó fare avviare un qualcosa se questo e scritto in . bit

t-rex:
da quello che ho trovato in rete dicono che win puó fare avviare un qualcosa se questo e scritto in . bit

La cosa è molto semplice, devi usare un alimentatore, separato dal pc, che fornisce i 12V per il pistone con i quali puoi alimentare anche Arduino, dato che non hai utilizzatori che prelevano corrente dal micro anche se stai al limite del regolatore si può fare, diventerà leggermente caldo, ovviamente devi mettere in comune il GND del pc con quello dell'alimentatore aggiuntivo.
Tramite Arduino rilevi la presenza del 12V, del PC, tramite un partitore resistivo, se preferisci va bene anche il +5V diretto però devi cercarne uno che non è presente con il pc spento, o in standby, con il 12V è più semplice.
All'accensione del pc Arduino rileva la presenza del 12V e solleva la rampa, quando va via il 12V la abbassa, a operazione terminata puoi fai scattare un rele che toglie l'alimentazione ad arduino e al pistone se non vuoi lasciarli alimentati in standby, o più semplicemente usi una ciabatta con interruttore in modo da spegnere tutto definitivamente come sarebbe buona norma fare.

t-rex:
si quelli che dite voi è esatto ma come si fa per caricare lo scketch creato in arduino?

Mi sorge il dubbio che tu non sappia che lo sketch è memorizzato in maniera permanente sulla Flash interna del microcontrollore per cui non devi preoccuparti se all'Arduino viene tolta l'alimentazione. Al successivo riavvio il programma è già "scritto" e riparte da sé.

astrobeed:

t-rex:
da quello che ho trovato in rete dicono che win puó fare avviare un qualcosa se questo e scritto in . bit

La cosa è molto semplice, devi usare un alimentatore, separato dal pc, che fornisce i 12V per il pistone con i quali puoi alimentare anche Arduino, dato che non hai utilizzatori che prelevano corrente dal micro anche se stai al limite del regolatore si può fare, diventerà leggermente caldo, ovviamente devi mettere in comune il GND del pc con quello dell'alimentatore aggiuntivo.
Tramite Arduino rilevi la presenza del 12V, del PC, tramite un partitore resistivo, se preferisci va bene anche il +5V diretto però devi cercarne uno che non è presente con il pc spento, o in standby, con il 12V è più semplice.
All'accensione del pc Arduino rileva la presenza del 12V e solleva la rampa, quando va via il 12V la abbassa, a operazione terminata puoi fai scattare un rele che toglie l'alimentazione ad arduino e al pistone se non vuoi lasciarli alimentati in standby, o più semplicemente usi una ciabatta con interruttore in modo da spegnere tutto definitivamente come sarebbe buona norma fare.

posso chiederti un schema o comunque un qualcosa?

[/quote]

Mi sorge il dubbio che tu non sappia che lo sketch è memorizzato in maniera permanente sulla Flash interna del microcontrollore per cui non devi preoccuparti se all'Arduino viene tolta l'alimentazione. Al successivo riavvio il programma è già "scritto" e riparte da sé.

[/quote]

no no so che lo scketch rimane sulla eprom ma il fatto che gli scketc sono uno due... eccoli
pistone giu

#include <Servo.h>

Servo myservo;
void setup()
{
myservo.attach(3);
}

// i am trying to me the actuator extend to a certain point and the retract to a certain point
void loop()
{

myservo.write(80);
delay(2000);
myservo.write(110);

}

pistone su
#include <Servo.h>

Servo myservo;
void setup()
{
myservo.attach(3);
}

// i am trying to me the actuator extend to a certain point and the retract to a certain point
void loop()
{

myservo.write(110);
delay(2000);
myservo.write(80);

}

a stgo punto penso che lo scketch andrebbe riscritto o mi sbaglio mettere tutto in uno e dire ad arduino quando non c e alimentazione del pc sul piedinoX il pistone deve andare giu e viceversa quando rileva l alimentazione su un piedino X il pistone va su

Allora basta unire i due sketch ti fai la lettura sulla presenza di alimentazione(qui ci provo in teoria basta un analog read) e poi usi il tuo sketch sai ti rileverò un segreto qualcuno ha inventato gli IF :astonished:

 #include <Servo.h>
  const int ledlettura = 6;
    Servo myservo;  
    void setup()
    {
      myservo.attach(3);  
    }
    void loop()
    {                                 
        int valore = analogRead(ledlettura);
        if(valore > 50)
        { 
        myservo.write(80);
        delay(2000);
        myservo.write(110); 
        }
        else 
        { 
        myservo.write(80);
        delay(2000);
        myservo.write(110);  
        }
               
    }

ps non so come funziona l'analog read quando leggi l'alimentazione di una porta usb, ho messo 50 giusto per evitare i disturbi :grin:

Madwriter:
Allora basta unire i due sketch ti fai la lettura sulla presenza di alimentazione(qui ci provo in teoria basta un analog read) e poi usi il tuo sketch sai ti rileverò un segreto qualcuno ha inventato gli IF :astonished:

 #include <Servo.h>

const int ledlettura = 6;
   Servo myservo;  
   void setup()
   {
     myservo.attach(3);  
   }
   void loop()
   {                                
       int valore = analogRead(ledlettura);
       if(valore > 50)
       {
       myservo.write(80);
       delay(2000);
       myservo.write(110);
       }
       else
       {
       myservo.write(80);
       delay(2000);
       myservo.write(110);  
       }
             
   }



ps non so come funziona l'analog read quando leggi l'alimentazione di una porta usb, ho messo 50 giusto per evitare i disturbi :grin:

intanto grazie mille che mi state dando una mano....
avrete capito che sono una capra con arduino...so poche cose ....ora se ho capito bene rileva sull uscita 6 dell'arduino se ci sono i 5 volt ....

se ci sono i 5v "esegue pistone su" se non ci sono "esegue pistone giù" :grin:

prima di fare delle cappellate ho gfatto un digno con point...

potresti usare un rele SPDT, quando arduino e' accesso il programma tira su un'uscita che eccita il rele e muove la piattaforma su, il finecorsa interrompe il segnale dal rele al motore (solo il segnale di PIATTAFORMA SU, altrimenti non lo puoi piu muovere giu). Quando spegni il pc arduino si spegne, la tensione dell'uscita digitale cade e il rele si diseccita chiudendo il contatto di PIATTAFORMA GIU, il fine corsa interrompe il segnale dal rele al motore (solo il segnale di PIATTAFORMA GIU, altrimenti non lo puoi piu muovere su).

rele_SPDT.png

Madwriter:
Allora basta unire i due sketch ti fai la lettura sulla presenza di alimentazione(qui ci provo in teoria basta un analog read) e poi usi il tuo sketch sai ti rileverò un segreto qualcuno ha inventato gli IF :astonished:

 #include <Servo.h>

const int ledlettura = 6;
   Servo myservo;  
   void setup()
   {
     myservo.attach(3);  
   }
   void loop()
   {                                
       int valore = analogRead(ledlettura);
       if(valore > 50)
       {
       myservo.write(80);
       delay(2000);
       myservo.write(110);
       }
       else
       {
       myservo.write(80);
       delay(2000);
       myservo.write(110);  
       }
             
   }



ps non so come funziona l'analog read quando leggi l'alimentazione di una porta usb, ho messo 50 giusto per evitare i disturbi :grin:

niente da fare non va.. :frowning:

come hai provato?hai dato tensione al pin di lettura?

Madwriter:
come hai provato?hai dato tensione al pin di lettura?

si dandogli e togliendo i 5 volt all ingresso del piedino 6 della scheda...non succedeva nulla

t-rex:

Madwriter:
come hai provato?hai dato tensione al pin di lettura?

si dandogli e togliendo i 5 volt all ingresso del piedino 6 della scheda...non succedeva nulla

puoi fare delle prove live,ovvero ti scrivo del codice e vediamo se va al momento?cosi facciamo dei test :slight_smile:
allora collega i 5 volt al pin 3 e carica questo sketch,cosi vediamo che leggiamo anche se forse ho capito quale il problema hai collegato la massa(gnd) dei 5v alla massa di arduino?

int analogPin = 3;     
                     
int val = 0;         

void setup()
{
  Serial.begin(9600);       
}

void loop()
{
  val = analogRead(analogPin);  
  Serial.println(val);             
}