Show Posts
|
|
Pages: [1] 2 3 ... 15
|
|
1
|
International / Hardware / Re: ArduoServoTime
|
on: April 20, 2013, 12:56:26 pm
|
|
Al momento ho messo in funzione solo i servo.
Le idee sono tante, quadranti che ruotano, manine che indicano l'ora, lancerre illuminate, numeri che si muovono etc...
Appena ne realizzo uno carino, lo posto sul sito.
|
|
|
|
|
2
|
International / Hardware / Re: ArduoServoTime
|
on: April 20, 2013, 12:36:54 pm
|
In realtà sono almeno il doppio anche su un servo economico, però mi spieghi come pensi di far girare le lancette, in modo continuo su 360°, con un dispositivo che può girare solo 180° ?
In realtà non ho detto che devono girare a 360°, 180° bastano, tipo contachilometri. ciao, stavo pensando anche io di fare una cosa simile ma mi è venuto subito un dubbio. come fai a mettere le 3 lancette nello stesso posto? Stai usando un qualche meccanismo? Il servo motore delle ore e dei minuti, si possono ad esempio posizionare uno di fronte all' altro, mentre quello dei secondi, separato come un cronografo.
|
|
|
|
|
3
|
International / Hardware / ArduoServoTime
|
on: April 20, 2013, 11:41:03 am
|
 Un saluto a tutta la comunity. Al contrario di chi pensa che l' open sia solo un modo per poter ottenere informazioni e poi tranne profitto, volevo condividere una mia idea su di un progetto alquanto "strano". Creare un orologio a lancette con arduino. Pensandoci un pò, sono arrivato alla conclusione che sia fattibilissimo, senza usare marchingegni o artifizi particolari. Certo un pò costoso rispetto ad un orologio da parete, ma comunque credo originale. Userò un arduino uno, 3 servo motori, tre pulsanti e tre resistenze da 10k(non per forza necessarie) come per LCD. Inizialmente pensavo ad uno o più motori passo passo, ma credo non semplice come realizzazione del meccanismo di posizionamento, mentre sapevo per certo che i servomotori si posizionano dove voglio con un range di ben 180 posizioni ed in modo molto preciso. Allora dopo l'acquisto dei servo, ecco il mio primo prototipo che ho chiamato ArduoServoTime. Buon divertimento, e per chi è interessato, via all ' evoluzioni creative. /* Sketch ArduoServoTime R.0.0 ________________________________________________________________________________________________________________ Invent & Create by Giuseppe G. (giusby & gengysghey) 16/04/2013 Basic design first published in the "http://www.arduoservotime.blogspot.it" site Enjoy. ________________________________________________________________________________________________________________ Version By Giuseppe G. Update:16/01/2013 Revision:0.0 ________________________________________________________________________________________________________________ Compiled with Arduino IDE 1.0.4 Windows XP 32bit ________________________________________________________________________________________________________________ Caracteristics R.0.0 1 servo motor for hour 1 servo motor for minute 1 servo motor for second _________________________________________________________________________________________________________________ Hardware Basic components R.0.0 1 Arduino Uno 3 servo motor 3 button 3 resistor 10K 1 LCD 16x2 6 wire 1 trimmer 10K ________________________________________________________________________________________________________________ The circuit: * LCD RS pin to digital pin 12 * LCD Enable pin to digital pin 11 * LCD D4 pin to digital pin 7 * LCD D5 pin to digital pin 6 * LCD D6 pin to digital pin 5 * LCD D7 pin to digital pin 4 * LCD R/W pin to ground * LCD ends to +5V and ground * wiper to LCD VO pin (10K resistor trimmer) * control motor servo 1 hour digital pin 8 * control motor servo 2 minute digital pin 9 * control motor servo 3 second digital pin 10 * button up hour digital pin 2 * button up minute digital pin 3 * button up second digital pin 13 */
//************************************************************************************************************ // SKETCH Arduo Servo Time Version for ARDUINO UNO By Giuseppe G. with HD R0.0 //************************************************************************************************************
// use this if is necessary for IDE //#if defined(ARDUINO) && ARDUINO >= 100 //#include "Arduino.h" //#else //#include "WProgram.h" //#endif
// include the library code: #include <LiquidCrystal.h> #include <Time.h> #include <Servo.h>
//DECLARATION VARIABLES:
Servo servoH; //motor hout Servo servoM; //motor minute Servo servoS; //motor second
byte adjs=48; // automatic correction second for day without RTC boolean memltime=0; // memory DST adjast
int ore; //hours int minuti; //minutes int secondi; //seconds
byte keyH=2; // button hour byte keyM=3; // button minute byte keyS=13; // button second
boolean selb=0; // memory change pressed buttons
// initialize the LCD library with the numbers of the interface pins LiquidCrystal lcd(12, 11, 4, 5, 6, 7);//(RS,E,D4,D5,D6,D7)
//*************************************************************************************
void setup() { Serial.begin(9600); //enable serial monitor pinMode(keyS, INPUT); //configure pin button second pinMode(keyM, INPUT); //configure pin button minute pinMode(keyH, INPUT); //configure pin button hour servoH.attach(8); //define motor hour servoM.attach(9); //define motor minute servoS.attach(10); //define motor second
// set up the LCD's number of columns and rows: lcd.begin(16, 2);
// Print a message version project to the LCD on start-up.
delay (500); //wait 1 second
//set restart device Time default(hr,min,sec,day,month,yr); setTime(00,00,00,16,4,2013);
}// end setup
//*************************************************************************************
void loop() {//main subroutine program of device
check_time(); view_dt(0,0); ore = map(hour(), 0, 23, 0, 180); minuti = map(minute(), 0, 59, 0, 180); secondi = map(second(), 0, 59, 0, 180); int oreT=hour(); int minutiT=minute(); int secondiT=second(); servoH.write(ore); servoM.write(minuti); servoS.write(secondi);
if(digitalRead(keyH) ==1 && selb == 0) {selb = 1; oreT++; setTime(oreT,minutiT,secondiT,1,1,2013);delay(100);} if(digitalRead(keyM) ==1 && selb == 0) {selb = 1; minutiT++; setTime(oreT,minutiT,secondiT,1,1,2013);delay(100);} if(digitalRead(keyS)==1 && selb == 0) {selb = 1; secondiT++; setTime(oreT,minutiT,secondiT,1,1,2013);delay(100);}
if(digitalRead(keyH)==0 && digitalRead(keyM)==0 && digitalRead(keyS)==0){selb = 0;} //reset memory pressed buttons
} //end loop
//*************************************************************************************
void check_time(){
// adj real time correction(increase adjs second for day" if (hour() == 23 && minute() == 59 && second() == 60 - adjs){ setTime(23,59,59,day(),month(),year()); }
// alignment daylight saving time correction +1 if (hour() == 2 && minute() == 00 && second() == 00 && weekday() == 1 && month() == 3 && day() > 24 ){ setTime(03,00,00,day(),month(),year()); memltime=0; }
// alignment daylight saving time correction -1 if (memltime == 0 && hour() == 3 && minute() == 00 && second() == 00 && weekday() == 1 && month() == 10 && day() > 24 ){ setTime(02,00,00,day(),month(),year()); memltime=1; } }
//*************************************************************************************
void view_dt(int col,int rig) {
// view time on LCD lcd.setCursor(col,rig); printDigit(hour()); lcd.print(F(":")); printDigit(minute()); lcd.print(F(":")); printDigit(second());
// view time on serial terminal printDigit_ser(hour()); Serial.print(":"); printDigit_ser(minute()); Serial.print(":"); printDigit_ser(second()); Serial.println("."); }
//*************************************************************************************
void printDigit(int digits){ // utility function for digital clock display: prints preceding colon and leading 0 if(digits < 10){lcd.print(F("0"));} lcd.print(digits); }
//*************************************************************************************
void printDigit_ser(int digits){ // utility function for digital clock on serial terminal: prints preceding colon and leading 0 if(digits < 10){Serial.print("0");} Serial.print(digits); }
//********************************************************************************************************************************************************************************* //end sketch PROJECT By Giuseppe G. Site:"http://www.arduoservotime.blogspot.it" Mail:"cimice96@hotmail.it" Post:"www.arduino.cc/forum" //*********************************************************************************************************************************************************************************
|
|
|
|
|
4
|
International / Software / Re: [Risolto] Problema con PCF8574AP
|
on: March 29, 2013, 05:32:52 pm
|
 Scusatemi, ho risolto. Avevo sbagliato il comando di scrittura. Lascio comunque la soluzione, anche se mi sento un pò ridicolo per l'errore. Se i moderatori del forum ritengono che questo sia obsoleto, possono cancellarlo. Correzione sul comando "wire.print": // test in-out PCF8574AP
#include<Wire.h>
byte x=0; byte y=0;
void setup() { Wire.begin(); Serial.begin(9600); }
void loop() {
Wire.requestFrom(0x3A,1); if(Wire.available()) //If the request is available { x=Wire.read(); //Receive the data } if(x<255) //If the data is less than 255 { if (x==0) { y = 0; }; //null if (x==1) { y = 1; }; //P1 if (x==2) { y = 2; }; //P2 if (x==4) { y = 4; }; //P3 if (x==8) { y = 8; }; //P4 if (x==16) { y = 16; }; //P5 if (x==32) { y = 32; }; //P6 if (x==64) { y = 64; }; //P7 if (x==128) { y = 128; }; //P8 } Wire.beginTransmission(0x3B); //Begin the transmission to PCF8574 Wire.print(y,0); //Send the data to PCF8574 Wire.endTransmission(); //End the Transmission Serial.println(y); } La riga corretta è la seguente: Wire.print(y,0); //Send the data to PCF8574gli esempi che ho trovato su internet, non evidenziavano questo aspetto "wire.print(y, 0);", ma solo "wire.print(y);" in particolare il codice che vedete l'ho copiato pari da un esempio. Lascio per scontato che gli esempi che si trovano nelle descrizioni delle librerie, siano testati. Da qui, il problema.
|
|
|
|
|
5
|
International / Software / [Risolto] Problema con PCF8574AP
|
on: March 29, 2013, 05:07:49 pm
|
Un saluto a tutti. Mi sapreste aiutare a risolvere questo problema ? Non riesco a capire perchè non funziona il PCF8574AP collegato ai pin SDA ed SCL rispettivamente ai pin A4 ed A5 di arduino con la comunicazione I2C. Mi spiego. Il circuito legge 8 ingressi digitali collegati al primo PCF8574AP configurato in ingresso e rispettivamente il secondo PCF8574A configurato in uscita ha collegato 8 led. Alla pressione del tato 1 si deve accendere il led 1, 2 il led 2 e così via. Tutto bene fino al tasto 4, dopo tutto un casino. Ho notato che in ingresso, vengono letti tutti gli ingressi correttamente, mentre per le uscite, il valore corretto che viene gestito si ferma a 14, dopo di chè non comprendo perchè le uscite con peso binario 16 e 32 sono sempre attive e quelle con peso 32 e 64 sempre spente. Il codice utilizzato è il seguente: // test in-out PCF8574AP
#include<Wire.h>
byte x=0; byte y=0;
void setup() { Wire.begin(); Serial.begin(9600); }
void loop() {
Wire.requestFrom(0x3A,1); if(Wire.available()) //If the request is available { x=Wire.read(); //Receive the data } if(x<255) //If the data is less than 255 { if (x==0) { y = 0; }; //null if (x==1) { y = 1; }; //P1 if (x==2) { y = 2; }; //P2 if (x==4) { y = 4; }; //P3 if (x==8) { y = 8; }; //P4 if (x==16) { y = 16; }; //P5 if (x==32) { y = 32; }; //P6 if (x==64) { y = 64; }; //P7 if (x==128) { y = 128; }; //P8 } Wire.beginTransmission(0x3B); //Begin the transmission to PCF8574 Wire.print(y); //Send the data to PCF8574 Wire.endTransmission(); //End the Transmission Serial.println(y); }
Grazie per l'attenzione.
|
|
|
|
|
6
|
International / Software / Re: ArduoAlarmMega / ArduoMegaAlarm
|
on: March 16, 2013, 12:55:38 pm
|
per maurotec: Non ci arrivo, niente non ci arrivo. smiley-razz Che devi liberalizzare, (sarai influenzato dalle cronache di questi giorni). haaaaaaaaaaaaaaa, forse ho capito, tu dici che il circuito anti-intrusione è un dispositivo a parte che ognuno può implementare come meglio crede, e quindi è conosciuto solo a chi lo realizza e non a tutti quelli che decidono di realizzare la scheda.
Ciao.
 Il concetto è proprio questo, liberalizzare l'idea di autocostruirsi un antifurto di un certo livello "PERSONALE". per testato: dico la mia anche se e' brutale, io credo che tu voglia commercializzare questo prodotto, sfruttando collaboprazioni gratuite per lo sviluppo. Questo non e' negativo in assoluto, specialmente se poi si mette a disposizione di tutti hw e sw, pero' sarebbe corretto dirlo. Probabilmente hai sempre la puzza sotto il naso. Io non voglio creare niente che poi voglia vendere, anche perchè sarà un progetto personale OPEN SOURCE. Hai compreso la risposta che ho dato a maurotec? Il tuo pensiero lo conosciamo, allora se altri la pensano diversamente da te, non cercare di portare fuori strada il mio. Saluti.  PS: testato ho fatto qualcoosa che non dovevo ? 
|
|
|
|
|
7
|
International / Software / Re: ArduoAlarmMega / ArduoMegaAlarm
|
on: March 15, 2013, 04:30:44 pm
|
 In realtà il bug c'è, e dopo n.cicli + 1 non suona più, ma il conteggio cicli conta all'infinito fino a quando non si disattiva. Ripeto è solo indicativo, per comprendere cosa dovrebbe poi arrivare a fare la centrale. In ogni caso, ho una versione completa funzionante che sto testando. Il problema è che ho superato i 255 oggetti per form, e devo scomporre il form principale dalla configurazione parametri. Un lavoretto non indifferente in parte fatto. Appena pronto lo posto, anche perchè sarà la base di riferimento per la comprensione delle funzioni base della centrale.
|
|
|
|
|
8
|
International / Software / Re: ArduoAlarmMega / ArduoMegaAlarm
|
on: March 15, 2013, 03:23:49 pm
|
|
Il SW dovrebbe funzionare a 32 bit, lo ho compilato con VB6 free, mentre per il problema del path, è legato alla cartella "AAM" che bisogna creare sotto "C:".
Il SW è una demo view "dimostrativa". In poche parole il sunto di cosa dovrebbe gestire la centrale antifurto arduino e cioè 16 ingressi configurabili per tipo, ritadati in uscita, in ingresso, parzializzabili, come tamper24h, etc....
Dovrebbe servire a chi non ha presente come funzioni una centrale antifurto, per comprendere le funzioni da implementare nel software da sviluppare su arduino.
Ciao.
|
|
|
|
|
9
|
International / Software / Re: ArduoAlarmMega / ArduoMegaAlarm
|
on: March 15, 2013, 02:24:37 am
|
 Anche se da quanto ho capito, dopo che ho postato le info di base per realizzare una centrale degna di chiamarsi centrale, "tutti" o quasi, si sono tirati indietro, io continuo per la mia strada, provando a sfidare la concorrenza "che dicono sicura" presente in commercio. L'idea è quella di liberalizzare il dispositivo di anti-intrusione, rendendolo quasi privato e quindi più sicuro, con concetti di base di un certo livello di sicurezza. Cosa mi spinge a farlo?  .....  Semplice !!! Chi mi dice che le centrali in commercio non abbiano password segrete o che con qualche artifizio elettronico la si possa bloccare ?  Se la centrale HW la costruiamo noi, il SW lo inventiamo noi, sappiamo sicuramente se sono presenti patch o problemi HW che possono rendere vulnerabile il sistema. Ecco che come riferimento HW ho postato le basi e come SW ho creato questa piccola e semplice demo di TEST per windows di facile intuizione, sviluppato in VB6 free per comprendere le funzioni base della centrale che andrò a realizzare. NB: Questa demo non è completa, ma dà un'idea di cosa dovrà gestire arduino a livello di allarme. Per gli amici "LINUX o MAC" scusate, ma non ho un PC con questo SO. Ad ogni modo, per chi fosse interessato, basta chiederlo e le invio i sorgenti VB di riferimento per poterlo sviluppare con altri linguaggi. In fondo, si può realizzare la centrale con il PC ed utilizzare la UNO come interfaccia. Certo, un pò più costosa e non tanto pratica, ma comunque potrebbe essere una delle soluzioni personalizzate. 
|
|
|
|
|
10
|
International / Software / Re: ArduoAlarmMega / ArduoMegaAlarm
|
on: March 08, 2013, 07:34:44 am
|
 Iniziamo a preparare la struttura dello sketck della nuova centrale AAS: MAIN
Inputs_Zone Keyboard Password Configuration System Date_Time Passowrd Level_Passowrd External_Key_Function Type_Zone Times_Zone Function_Zone Memory_Storage Display_View Alarm_Functions Activation Outputs Memory_Events "Add_Function_1" "Add_Function_2"................ "Debug_on_serial"
End_MAIN
Ho dimenticato qualcosa?
|
|
|
|
|
12
|
International / Software / Re: ArduoAlarmMega / ArduoMegaAlarm
|
on: March 06, 2013, 04:25:39 pm
|
 Ultimi aggiornamenti HW: - stadio di alimentazione con protezione alimentazione 12V di servizio tramite fusibile da 2A con autoripristino e segnalazioni tramite led dello stato rete, ricarica batteria e alimentazione di servizio. - ingresso zona bilanciato con protezione taglio e cortocircuito cavi su http//:www.arduoalarmsimple.blogspot.it Troverete anche i datasheet del fusibile automatico TCO e della resistenza termica PTC per la limitazione della corrente di carica della batteria tampone. Un saluto a tutta la comunity.  Giuseppe G.
|
|
|
|
|
14
|
International / Software / Re: ArduoAlarmMega / ArduoMegaAlarm
|
on: March 04, 2013, 10:54:24 am
|
Ciao MauroTec,  non flotta, si porta al massimo a 0,6V generati da D1 e R1 in serie alla R2 da 10K. Il condensatore C1 evita proprio questo. In ogni caso, per sicurezza, basterebbe una resistenza da 1Mega che a questo punto si può benissimo integrare al circuito.  Se salta il fusibile, si ha la segnalazione di Tamper 24H, cioè manomissione (il pin di arduino si porta a circa 4,4V). Occorre quindi gestire l'autoesclusione della zona dopo n allarmi, altrimenti la centrale continuerebbe a suonare per sempre. Questa funzione sarà sempre attiva, anche a centrale disinserita, proprio per proteggere il circuito cablato. 
|
|
|
|
|
15
|
International / Software / Re: ArduoAlarmMega / ArduoMegaAlarm
|
on: March 04, 2013, 03:49:50 am
|
 Ecco il collegamento dell' ingresso zona bilanciato. Trucchetto per sfruttare un ingresso analogico del microprocessore per più segnalazioni Tamper: la tensione sul pin di ingresso del micro si porta a circa 4,4V Zona1 LOW: la tensione sul pin di ingresso del micro si porta a circa 1,2V Zona1 HIGH: la tensione sul pin di ingresso del micro si porta a circa 1,8V Zona1L+Zona2H: la tensione sul pin di ingresso del micro si porta a circa 2,2V PS: Il diodo D1 non è al contrario. Un saluto a tutti. Giuseppe G.
|
|
|
|
|