/*
--- Programme Arduino ---
Copyright Pascal ROMEYER
Date de création : 21/07/2016
Date de modification : 21/07/2016
Version 1.00
http://f4cvm.free.fr
Code sous licence GNU GPL :
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License,
or any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see .
--- Que fait ce programme ? ---
En fonction de la reception des valeur vitesse et direction
mixage de 2 variateur en avant ou arriere
--- Fonctionnalites utilisees ---
Afficheur LCD 1202 I2C - Juste 2 broches utilisees
pour affichage des données, ne sera pas utile par la suite
--- Circuit à realiser ---
Rubrique Modelisme... Les projets... Mixeur
Les servo a raccorder sur les sorties PWM D5 et D6
La radio raccordee sur A1 et A2
\\\|///
\\ - - //
( @ @ )
+---oOOo-(_)-oOOo------------------------------------+
Pascal ROMEYER
SAINT JUST MALMONT (43) JN25DI
Email perso : pascal.romeyer@free.fr
Email radio : f4cvm@free.fr
Site radio : http://f4cvm.free.fr
ooO Ooo
+---( )--( )---------------------------------------+
\ ( ) /
\_) (_/
*/
/*
-----------------------------
Chargement des biliotheques
-----------------------------
*/
// Bus I2C
#include
// Ecran LCD
#include
// Servomoteur
#include
/*
------------------------------------------
Definition de l'ecran
Adresse LCD 0x27, 20 caracteres, 4 lignes
------------------------------------------
*/
LiquidCrystal_I2C lcd(0x27, 20, 4);
/*
--------------------------
Declaration des variables
--------------------------
*/
Servo moteur1; // creation de l objet servo pour le controler
Servo moteur2; // creation de l objet servo pour le controler
unsigned long volant; // Port analogique acquisition volant
unsigned long vitesse; // Port analogique acquisition volant
int voie1;
int voie2;
int convert_voie1;
int convert_voie2;
/*
-------------------------------------
Declaration du SETUP
-------------------------------------
*/
void setup()
{
lcd.init(); // On initialise le LCD
lcd.backlight(); // On allume le retro eclairage
moteur1.attach(5); // attaches the servo on pin 9 to the servo object
moteur2.attach(6); // attaches the servo on pin 9 to the servo object
}
/*
-------------------------------------
Boucle principale du programme
-------------------------------------
*/
void loop()
{
// Acquisition des voies du recepteur
volant = pulseIn (4, HIGH); // Lecture de la voie volant
// volant = volant + 35; // Facteur de correction du zero servo
vitesse = pulseIn (8, HIGH); // Lecture de la voie accelerateur
// vitesse = vitesse + 35; // Facteur de correction du zero servo
// Affichage des valeurs brutes
lcd.setCursor (0,0);
lcd.print ("Volant:");
lcd.setCursor (7,0);
lcd.print (" ");
lcd.setCursor (7,0);
lcd.print (volant);
lcd.setCursor (0,1);
lcd.print ("Speed:");
lcd.setCursor (6,1);
lcd.print (" ");
lcd.setCursor (6,1);
lcd.print (vitesse);
// conversion des voies pour les servo
convert_voie1 = map(volant, 1000, 2000, 0, 180); // scale it to use it with the servo (value between 0 and 180)
convert_voie2 = map(vitesse, 1000, 2000, 0, 180); // scale it to use it with the servo (value between 0 and 180)
// Affichage des valeur d angle des servos
lcd.setCursor (0,2);
lcd.print ("SERVO VOLANT:");
lcd.setCursor (14,2);
lcd.print (" ");
lcd.setCursor (14,2);
lcd.print (convert_voie1);
lcd.setCursor (0,3);
lcd.print ("SERVO SPEED:");
lcd.setCursor (14,3);
lcd.print (" ");
lcd.setCursor (14,3);
lcd.print (convert_voie2);
// Ecriture des valeur dans les servos
moteur1.write(convert_voie1); // Servo No 1
// delay(15); // waits for the servo to get there
moteur2.write(convert_voie2); // Servo No 2
// delay(15); // waits for the servo to get there
}