Rispondi 
Costruzione pilota automatico per barca a vela
Autore Messaggio
pepilene Offline
Senior utente

Messaggi: 2.562
Registrato: Jun 2012 Online
Messaggio: #10
RE: Costruzione pilota automatico per barca a vela
Ecco lo Sketch, per chi conosce questo linguaggio è abbastanza semplice.
Partiamo dal presupposto che con il pilot.. non debbo attraversare l'Atlantico quindi una cosa molto semplice, tra l'altro parliamo di una scheda Arduino uno da 15 euro. Attualmente il problema maggiore è durante la navigazione con angolo di rotta intorno a 0 gradi.



#include <LiquidCrystal.h>
#include <Wire.h> //i2c library for the Digital Compass

LiquidCrystal lcd( 12, 11, 7, 8, 9, 10 );
const int hmc5883Address = 0x1E; //0011110b, I2C 7bit address for compass
const byte hmc5883ModeRegister = 0x02;
const byte hmcContinuousMode = 0x00;
const byte hmcDataOutputXMSBAddress = 0x03;
int rotta=0;

void setup()
{
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
lcd.clear(); //make sure screen is clear.
lcd.print("pepilene is Go");
delay(4000);
Wire.begin(); // Start the i2c communication
Wire.beginTransmission(hmc5883Address); //Begin communication with compass
Wire.write(hmc5883ModeRegister); //select the mode register
Wire.write(hmcContinuousMode); //continuous measurement mode
Wire.endTransmission();

pinMode(2, OUTPUT);//LED FUTURO RELAIS MOTORE A SINISTRA
pinMode(3, OUTPUT);//LED IN FUTURO RELAIS MOTORE A DRITTA
pinMode(4, OUTPUT);//LED PILOTA ON /OFF
pinMode(1, INPUT);//INTERRUTTORE ON OFF PILOTA
pinMode(5, INPUT);//PULSANTE MEMORIZZA ROTTA NUOVA DALL'ANGOLO ATTUALE
pinMode(13, INPUT);//PULSANTE + DIECI GRADI A DRITTA
pinMode(6, INPUT);//PULSANTE - DIECI GRADI A SINISTRA

}
void loop()
{
int x,y,z;
Wire.beginTransmission(hmc5883Address);
Wire.write(hmcDataOutputXMSBAddress); //Select register 3, X MSB register
Wire.endTransmission();
Wire.requestFrom(hmc5883Address,6);
if(6<=Wire.available())
{
x = Wire.read()<<8; //X msb
x |= Wire.read(); //X lsb
z = Wire.read()<<8; //Z msb
z |= Wire.read(); //Z lsb
y = Wire.read()<<8; //Y msb
y |= Wire.read(); //Y lsb
}

int angle = atan2(-y,x)/M_PI*180; // setta angolo SEMPRE POSITIVO
if (angle < 0) // 360 gradi

{
angle = angle +360; // 360 gradi
}

//IL DISPLAY VISUALIZZA STATO ON OPPURE OFF E POI ROTTA E ANGOLO , NON PIù X,Y,Z CHE MI PARE SERVANO A POCO

lcd.clear(); //make sure screen is clear again.
lcd.setCursor(0,0);
if (digitalRead(1) == HIGH) {lcd.print("ON:");} else {lcd.print("OFF:");}
lcd.setCursor(4,0);
lcd.print("rotta:");
lcd.setCursor(0,1);
lcd.print("gradi:");
lcd.setCursor(11,0);
lcd.print(rotta);
lcd.setCursor(11,1);
lcd.print(angle);
delay(500);

//PRIMA VA IMPOSTATA LA ROTA PREMENDO IL BOTTONE 5
if (digitalRead(5) == HIGH) {rotta = angle;}

//POI VA AVVIATO IL PILOTA CON L'INTERRUTTORE 1
if (digitalRead(1) == HIGH) {digitalWrite(4, HIGH);

//PILOTA ADESSO AVVIATO FUNZIONANO I TASTI PER CAMBIARE ROTTA
:smiley30:if (digitalRead(6) == HIGH) {rotta = rotta + 10;}Smiley30
:smiley30:if (digitalRead(13) == HIGH) {rotta = rotta - 10;}Smiley30


if (rotta < angle){digitalWrite(3, HIGH); delay(100);digitalWrite(3, LOW); delay(100);}
else {digitalWrite(2, HIGH);delay(100);digitalWrite(2, LOW);delay(100);}
}
else
{digitalWrite(3, LOW);}
}

Il destino mescola le carte, ma siamo noi a giocarle.


15-02-2016 19:06
Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
Rispondi 


Messaggi in questa discussione
RE: Costruzione pilota automatico per barca a vela - pepilene - 15-02-2016 19:06

Discussioni simili
Discussione: Autore Risposte: Letto: Ultimo messaggio
  Strumento di controllo del pilota mod Raymarine ST6001 - compatibilità? crocchidù 1 493 27-11-2023 07:38
Ultimo messaggio: pepe1395
  Pilota st4000 impazzito Francescobissotwo 4 542 15-10-2023 20:53
Ultimo messaggio: Francescobissotwo
  Pilota ST6000...'NO LINK' ???? Madinina II 32 7.587 14-09-2023 16:22
Ultimo messaggio: Poliorcete
  Problemi pilota st 4000 CUCUDRIL 0 449 12-09-2023 11:14
Ultimo messaggio: CUCUDRIL
  Pilota automatico a ruota che resta agganciato torcido 14 982 29-07-2023 12:34
Ultimo messaggio: torcido
  Consiglio pilota automatico giorgio8596 15 1.287 13-07-2023 17:09
Ultimo messaggio: giorgio8596
  St70 - Pilota automatico vaimo 4 720 05-07-2023 16:39
Ultimo messaggio: vaimo
  Pilota automatico blocca la ruota Masmau 30 3.139 24-04-2023 08:41
Ultimo messaggio: Masmau
  Comandare il pilota automatico con apple watch (o simile) sema23 1 523 21-04-2023 21:19
Ultimo messaggio: Antaniiii
  Rumore pilota automatico Raymarine Ev 100 Francodepoi 6 1.434 14-11-2022 01:12
Ultimo messaggio: Francodepoi

Vai al forum:


Utente(i) che stanno guardando questa discussione: 16 Ospite(i)