…..dopo una nottata passata a mettere in pratica una mia vecchia idea . Il commutatore per hd . Oltre l’HD estraibile ho altri due / tre HD che uso per salvare dati , Hd con dati personali che non voglio tenere accesi quando navigo in internet … quindi io che fino a ieri sera non avevo mai collegato un pulsante al atmega , parto in quarta e stamattina funziona quasi tutto .
Parto dal idea che i nuovi alimentatori ATX hanno sul filo viola un 5 Vcc permanenti , anche quando il pc e spento ( ma con alimentatore il st-by ) . Quindi l’idea era quella di controllare tre rele con un atmega tramite tre pulsanti . Quindi a macchina ancora spenta premo a piacere i tre pulsanti ( la scheda e alimentata grazie ai 5 vcc presenti in st-by ) e seleziono quali HD devono accendersi quando avvio la macchina .
Quindi premo una volta ed abilito il primo rele , se premo un'altra volta il medesimo pulsante si spegne …e cosi via per i tre canali. In questo modo scelgo quale HD voglio accendere .
Lo trovo molto interessante per poter scegliere per esempio anche se si vuole avviare con un linux o altri SO .
Come potete vedere la scheda ha anche un lcd che in un secondo tempo visualizzerà anche le temperature interne ( ingressi adc ) Un'altra cosa che mi piacerebbe farli fare sarebbe quella di tenere le ventole accese per altri 10 minuti dopo lo spegnimento della macchina ( con questa cosa sono fissato , penso sia causa del “rinsechimento “ della pasta tra processore e dissipatore. Non mi piace il fatto che si spenga la ventola con il dissipatore ancora caldo che continua a dissipare calore dopo che la ventola si e spenta ! ( anche se il pc da laboratorio lo tengo sempre aperto su un fianco ) . Un 5 V o un 12 extra serve sempre e poi cosi si tiene sempre d’occhio la polvere sul dissipatore .
Comunque , ritornano a noi … per aver iniziato “da autodidatta “ con i micro un mese fa , sono contentissimo delle cose che riesco a fare per il momento . Lo so , per voi che insegnate , che lavorate con i micro da anni o che fatte l’università vi sembrerà una cavolata , ma questo piccolo progetto mi sta dando delle soddisfazioni enormi .
Forse perché la trovo una cosa molto utile ( vorrei un vostro parere sincero ) .
Sono sicuro che per il codice si può fare di meglio , io al momento sono riuscito a fare questo e funziona abbastanza bene , tranne che ogni tanto l’antirimbalzo fa girare le balle. Per la verità non ho usato la procedura antirimbalzo , ho messo un semplice ritardo , quindi non mi aspettavo che funzionasse benissimo alla prima. Per me è già tanto essere riuscito a scrivere 12 righe di codice che fanno più o meno quello che volevo. Si capisce che in questa fase gli aiuti sono molto preziosi perché se si riescono a capire alcuni “ meccanismi” forse il cervello si sblocca . Chi mi da una mano per favore con un esempio di antirimbalzo nel codice che ho scritto ??? Io ho fatto riferimento al 3d sul antirimbalzo che avevo postato , ma sinceramente non so come integrare la funzione nel mio codice.
Grazie ….
Ora mi faccio il caffe e mi riprendo il discorso del antirimbalzo che fin ora non mi e tanto chiaro. Aspetto con ansia vostre news .
Adriano.
allegato mio codice ...
- Code: Select all
$regfile = "m48def.dat"
$crystal = 16000000
$hwstack = 32
$swstack = 32
$framesize = 32
$baud = 9600
'$sim
Config Portd.3 = Output
Config Portd.4 = Output
Config Portd.5 = Output
Config Portd.0 = Input
Config Portd.1 = Input
Config Portd.2 = Input
P1 Alias Pind.0
P2 Alias Pind.1
P3 Alias Pind.2
Portd.3 = 1
Portd.4 = 1
Portd.5 = 1
Do
If P1 = 0 Then 'pulsante 1 premuto
Waitms 800
Portd.3 = 0 ' rele 1 on
End If 'pulsante premuto seconda volta deve spegnere rele 1
If P1 = 0 Then
Waitms 800
Portd.3 = 1
Waitms 40 ' rele 1 spento
End If
If P2 = 0 Then
Waitms 800
Portd.4 = 0
End If
If P2 = 0 Then
Waitms 800
Portd.4 = 1
Waitms 40
End If
If P3 = 0 Then
Waitms 800
Portd.5 = 0
End If
If P3 = 0 Then
Waitms 800
Portd.5 = 1
Waitms 40
End If
Loop
End