Show Posts
|
|
Pages: [1] 2
|
|
1
|
International / Software / Re: libreria servo.h con servo hitec hs-785hb
|
on: February 06, 2013, 12:31:29 pm
|
|
da quanto la devo mettere la batteria ... conta che se riesco a farlo funzionare dovrei collegare da 1 a 4 servi (adesso ne ho due) ...
insieme al kit mi sembra che c'era uno snap battery per una batteria da 9v (quelle quadrate per capirci) ... scusa ma sono proprio a zero!
|
|
|
|
|
4
|
International / Software / Re: libreria servo.h con servo hitec hs-785hb
|
on: February 06, 2013, 11:30:25 am
|
continua a girare in un verso ... a scatti (sembra quasi che sgrani) ... // library: #include <LiquidCrystal.h> #include <Servo.h>
// Define object: LiquidCrystal objLcd( 12 , 11 , 5 , 4 , 3 , 2);
Servo objOschi_1;
// set pin numbers:
const int OSCI_1 = 9;
char buffer[11];
boolean Sommo = true;
void setup() { objOschi_1.attach(OSCI_1); objLcd.begin(16, 2); objLcd.print("Connecting ..."); delay(1500); objLcd.clear(); objLcd.setCursor(0, 0); objLcd.print("ciao"); Serial.begin(9600); }
void loop() { for (int i=1100; i<1900;i++){ objOschi_1.writeMicroseconds(i); delay(1000); } };
|
|
|
|
|
6
|
International / Software / Re: libreria servo.h con servo hitec hs-785hb
|
on: February 06, 2013, 11:07:21 am
|
|
Ciao, prima di tutto ti ringrazio dell'aiuto ...
non riesco a capire come possa trasformare la write in writemicroseconds ... ti allego il codice forse riesco a farmi capire :
// library: #include <LiquidCrystal.h> #include <Servo.h>
// Define object: LiquidCrystal objLcd( 12 , 11 , 5 , 4 , 3 , 2);
Servo objOschi_1;
// set pin numbers:
const int OSCI_1 = 46; const int SET = 32; const int PIU = 33; const int MENO = 34; const int CONF = 35;
// variables will change: int StatoBottone=0; int val; int posizione = 10; int Numero_Pompa = 1; int Angolazione_min = 1; int Angolazione_max = 360;
char buffer[11];
boolean Sommo = true;
void setup() { objOschi_1.attach(OSCI_1); pinMode(SET, INPUT ); pinMode(PIU, INPUT); pinMode(CONF, INPUT); // attachInterrupt(0, SettingMode, RISING ); InitLcd(); Serial.begin(9600); }
void loop() { if (digitalRead(SET) == HIGH) { SettingMode(); } ; objOschi_1.write(posizione); if (Sommo){ posizione++; if (posizione >=Angolazione_max) { Sommo=false; } ; } else { posizione--; if (posizione <=Angolazione_min) { Sommo=true; } ; } delay(15); }; void InitLcd() { objLcd.begin(16, 2); objLcd.print("Connecting ..."); delay(1500); objLcd.clear(); objLcd.setCursor(0, 0); objLcd.print("OsciMotion Italy"); }
void SettingMode() { boolean setMode = true; boolean setNotConfirmPompa = true; boolean setNotConfirmAngoloMin = true; boolean setNotConfirmAngoloMax = true; int setModeLevel = 0; int AngoloMin = Angolazione_min; int AngoloMax = Angolazione_max; Numero_Pompa=1; while ( setMode ) {
if ( setModeLevel == 0 ) { sprintf(buffer, "Pompa N. %d", Numero_Pompa);
objLcd.clear(); objLcd.setCursor(0, 0); objLcd.print("Scegliere Pompa"); objLcd.setCursor(0, 1); objLcd.print(buffer); delay(15); while ( setNotConfirmPompa ) { if (digitalRead(PIU) == HIGH) { Numero_Pompa++ ; if (Numero_Pompa > 5) {Numero_Pompa=1;}; sprintf(buffer, "Pompa N. %d", Numero_Pompa); objLcd.setCursor(0, 1); objLcd.print(buffer); delay(400); } if (digitalRead(MENO) == HIGH) { Numero_Pompa-- ; if (Numero_Pompa < 1) {Numero_Pompa=5;}; sprintf(buffer, "Pompa N. %d", Numero_Pompa); objLcd.setCursor(0, 1); objLcd.print(buffer); delay(400); } if (digitalRead(CONF) == HIGH) { setModeLevel++; setNotConfirmPompa=false; delay(200); } } } if ( setModeLevel == 1 ) { sprintf(buffer, "Angolo %d", AngoloMin);
objLcd.clear(); objLcd.setCursor(0, 0); objLcd.print("Angolo Minimo"); objLcd.setCursor(0, 1); objLcd.print(buffer); objOschi_1.write(AngoloMin); delay(15); while (setNotConfirmAngoloMin) { if (digitalRead(PIU) == HIGH) { AngoloMin++ ; if (AngoloMin > 170) {AngoloMin=1;}; sprintf(buffer, "Angolo %d", AngoloMin); objLcd.clear(); objLcd.setCursor(0, 0); objLcd.print("Angolo Minimo"); objLcd.setCursor(0, 1); objLcd.print(buffer); objOschi_1.write(AngoloMin); delay(250); } if (digitalRead(MENO) == HIGH) { AngoloMin--; if (AngoloMin < 1) {AngoloMin=170;}; sprintf(buffer, "Angolo %d", AngoloMin); objLcd.clear(); objLcd.setCursor(0, 0); objLcd.print("Angolo Minimo"); objLcd.setCursor(0, 1); objLcd.print(buffer); objOschi_1.write(AngoloMin); delay(250); } if (digitalRead(CONF) == HIGH) { setModeLevel++; setNotConfirmAngoloMin=false; Angolazione_min=AngoloMin; posizione=AngoloMin; Sommo = true; delay(200); } } } if ( setModeLevel == 2 ) { sprintf(buffer, "Angolo %d", AngoloMax);
objLcd.clear(); objLcd.setCursor(0, 0); objLcd.print("Angolo Massimo"); objLcd.setCursor(0, 1); objLcd.print(buffer); objOschi_1.write(AngoloMax); delay(15); while (setNotConfirmAngoloMax) { if (digitalRead(PIU) == HIGH) { AngoloMax++ ; if (AngoloMax > 360) {AngoloMax=1;}; sprintf(buffer, "Angolo %d", AngoloMax); objLcd.clear(); objLcd.setCursor(0, 0); objLcd.print("Angolo Massimo"); objLcd.setCursor(0, 1); objLcd.print(buffer); objOschi_1.write(AngoloMax); delay(250); } if (digitalRead(MENO) == HIGH) { AngoloMax--; if (AngoloMax < 1) {AngoloMax=1;}; sprintf(buffer, "Angolo %d", AngoloMax); objLcd.clear(); objLcd.setCursor(0, 0); objLcd.print("Angolo Massimo"); objLcd.setCursor(0, 1); objLcd.print(buffer); objOschi_1.write(AngoloMax); delay(250); } if (digitalRead(CONF) == HIGH) { setModeLevel++; setNotConfirmAngoloMax=false; Angolazione_max=AngoloMax; posizione=AngoloMax; Sommo = false; delay(200); } } } if ( setModeLevel == 3 ) { objLcd.clear(); objLcd.setCursor(0, 0); objLcd.print("Saving ..."); delay(600); objLcd.clear(); objLcd.setCursor(0, 0); objLcd.print("OsciMotion Italy"); setMode = false; } } delay(600); }
Come vedi ho dei valori iniziali ed il servo fa da valore minimo a valore massimo poi successivamente da valore massimo a minimo ...
Se premo il tasto Setting posso impostare il valore minimo attraverso i bottoni più e meno (man mano che premo vedo il servo che si muove) ... stessa cosa per valore massimo ...
come posso trasformare il valore posizione 1 in microseconds ?
il mio servo dovrebbe fare al max 360° mentre il servo gira 3,5 volte ...
please help
|
|
|
|
|
7
|
International / Software / Re: libreria servo.h con servo hitec hs-785hb
|
on: February 06, 2013, 08:49:04 am
|
|
Non riesco a capire come possa utilizzare la map ... Io in input ho gradi min e gradi Max ed il servo deve costantemente ruotare prima a destra e poi a sinistra di un grado alla volta ...
Con writeMicroseconds peggio di prima .....
|
|
|
|
|
9
|
International / Software / libreria servo.h con servo hitec hs-785hb
|
on: February 05, 2013, 07:03:11 pm
|
|
Ciao a tutti, oggi mi sono arrivati due servo della hitec hs-785hb possono ruotare fino a 3,5 giri ...
il mio problema è che con la libreria servo.h non riesco a farli funzionare ... sbarellano proprio ... potete darmi una mano? qualcuno ha già risolto questo problema?
ciao
|
|
|
|
|
10
|
International / Software / Re: rs422 full duplex
|
on: February 05, 2013, 08:16:16 am
|
|
ok mi hai convinto ... can ... :-) ... questa sera vedo di capire il funzionamento delle librerie ... se ho problemi mi puoi dare una mano?
grazie e ciao
|
|
|
|
|
11
|
International / Software / Re: rs422 full duplex
|
on: February 05, 2013, 08:00:26 am
|
Ci sono tre differenti tipi di dispositivo ZigBee:
Gli Xbee consentono di utilizzare reti con più coordinatori, estendono le possibilità del protocollo Zigbee e non sono dei moduli Zigbee generici. quindi alla fine che cosa mi consiglieresti tu tra il can e zigbee (con l'utilizzo degli xbee) ... forse il can è più economico ...
|
|
|
|
|
12
|
International / Software / Re: rs422 full duplex
|
on: February 05, 2013, 07:44:23 am
|
Per il CAN ti conviene iniziare dal topic messo in evidenza sul blog di Arduino che ti avevo linkato http://arduino.cc/forum/index.php/topic,8730.0.html, li trovi anche le librerie, se opti per l'utilizzo della coppia MCP2515 (controller) e MCP2551(transceiver) praticamente hai il 95% del carico di lavoro svolto dal 2515, che in realtà è un micro preprogrammato per gestire il protocollo CAN. Come puoi vedere nella foto del topic che ti ho linkato i due IC esistono anche in formato pdip il che ti semplifica molto la loro integrazione su una tua shield se non vuoi "combattere" con gli SMD. provo a dargli un'occhiata anche se l'inglese lo mastico mooolto poco :-(
|
|
|
|
|
13
|
International / Software / Re: rs422 full duplex
|
on: February 05, 2013, 07:43:08 am
|
Il coordinatore è uno, ma anche più di uno, dei moduli Xbee in rete, serve per gestire le comunicazioni tra i moduli. In pratica un mesh network Xbee è composto da almeno due moduli Xbee serie 2, uno è il coordinatore e l'altro un router, puoi inserire molti altri router e altri coordinatori nella rete, tutti i moduli Xbee possono parlare tra di loro e ricevere comunicazioni broadcast, cioè quello che viene trasmesso da uno arriva a tutti gli altri.
Cercando su wiki: Ci sono tre differenti tipi di dispositivo ZigBee: -ZigBee Coordinator (ZC): è il dispositivo più "intelligente" tra quelli disponibili, costituisce la radice di una rete ZigBee e può operare da ponte tra più reti. Ci può essere un solo Coordinator in ogni rete. Esso è inoltre in grado di memorizzare informazioni riguardo alla sua rete e può agire come deposito per le chiavi di sicurezza. -ZigBee Router (ZR): questi dispositivi agiscono come router intermedi passando i dati da e verso altri dispositivi. -ZigBee End Device (ZED): includono solo le funzionalità minime per dialogare con il suo nodo parente (Coordinator o Router), non possono trasmettere dati provenienti da altri dispositivi; sono i nodi che richiedono il minor quantitativo di memoria e quindi risultano spesso più economici rispetto ai ZR o ai ZC.
|
|
|
|
|
14
|
International / Software / Re: rs422 full duplex
|
on: February 05, 2013, 07:32:06 am
|
|
no intendo piano di casa :-)
conta che la vasca tecnica oltre a contenere l'attrezzatura deve anche contenere l'eventuale acqua che scende in caso di black out ... conosco persone che hanno acquari di 1000/1500 litri :-)
vi sto facendo un corso accellerato sull'acquario di barriera :-)
|
|
|
|
|
15
|
International / Software / Re: rs422 full duplex
|
on: February 05, 2013, 06:56:10 am
|
|
allora ragazzi ...
i2c non è possibile in quanto l'attrezzatura tante volte si trova anche a molti metri di distanza ... vi spiego meglio ... l'acquario marino ha bisogno (solitamente) di tre vasche: 1) Acquario 2) Vasca tecnica (dove vengono allogiate le attrezzature) 3) Vasca di Ripristino acqua evaporata
Molti malati (nel buon senso della parola) hanno l'Acquario al piano di sopra e la vasca tecnica al piano di sotto ...
Riguardo agli Xbee cercando in rete mi è sembrato che anche qui serve per forza un coordinatore ma in questo sistema potrebbe non esserci (dipende se uno compra tutto il sistema subito) ...
:-)
|
|
|
|
|