Bonjour,
J'ai fait ce petit programme qui me permet de lire la valeur de huit potentiomètres multiplexer sur un LCD et je voudrai le simplifier, mais je ne sais pas comment.
Dans ce programme j'ai repeter la même operation pour les huits potentiometres, n'y a t'il pas un moyen de simplifier cela ?
Merci pour votre aide
Voici le programme:
/*
Le but du circuit est de lire la valeur d'un des huits potentiometre
l'afficheur LCD en passant par un multiplexage analogique des entrées
*/
// include the library code:
#include <LiquidCrystal.h>
#include <EEPROM.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int analogIn = 0; // valeur de la Pin analogique d'entrée
int valuepot1 = 0; // valeur du potar 1
int valuepot2 = 0; // valeur du potar 2
int oldvaluepot1 = 0;
int oldvaluepot2 = 0;
int valuepot3 = 0; // valeur du potar 3
int valuepot4 = 0; // valeur du potar 4
int oldvaluepot3 = 0;
int oldvaluepot4 = 0;
int valuepot5 = 0; // valeur du potar 5
int valuepot6 = 0; // valeur du potar 6
int oldvaluepot5 = 0;
int oldvaluepot6 = 0;
int valuepot7 = 0; // valeur du potar 7
int valuepot8 = 0; // valeur du potar 8
int oldvaluepot7 = 0;
int oldvaluepot8 = 0;
// Initialsé le 4051 avec les pins de sorti
int r0 = 0; //value select pin at the 4051 (s0)
int r1 = 0; //value select pin at the 4051 (s1)
int r2 = 0; //value select pin at the 4051 (s2)
int row = 0; // storeing the bin code
int count = 0; // just a count
int bin [] = {000, 1, 10, 11, 100, 101, 110, 111};//bin = binär, some times it is so easy
byte val1; // valeur enreg dans l'eeprom du potar 1
byte val2; // valeur enreg dans l'eeprom du potar 2
void setup() {
// set up the LCD's number of rows and columns:
lcd.begin(16, 2);
// initialise les pins de sorti pour 4051
pinMode(10, OUTPUT); // s0
pinMode(9, OUTPUT); // s1
pinMode(8, OUTPUT); // s2
}
void loop() {
// set the cursor to column 0, line 1
//scanner les entrées du 4051
for (count=0; count<=7; count++) {
row = bin[count];
r0 = row & 0x01;
r1 = (row>>1) & 0x01;
r2 = (row>>2) & 0x01;
digitalWrite(8, r0);
digitalWrite(9, r1);
digitalWrite(10, r2); //Serial.println(bin[count]);
delay (0);
// enreg la valeur du potar 1 dans une variable
if (count==0){
valuepot1 = analogRead (analogIn);
if (valuepot1 != oldvaluepot1){
valuepot1 = analogRead (analogIn);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Valeur Pot1");
lcd.setCursor(0,1);
lcd.print(valuepot1,DEC);
}
}
oldvaluepot1 = (valuepot1);
// enreg la valeur du potar 2 dans une variable
if (count==4){
valuepot2 = analogRead (analogIn);
if (valuepot2 != oldvaluepot2){
valuepot2 = analogRead (analogIn);
lcd.setCursor(0,0);
lcd.print("Valeur Pot2");
lcd.setCursor(0,1);
lcd.print(valuepot2,DEC);
}
}
oldvaluepot2 = (valuepot2);
// enreg la valeur du potar 3 dans une variable
if (count==2){
valuepot3 = analogRead (analogIn);
if (valuepot3 != oldvaluepot3){
valuepot3 = analogRead (analogIn);
lcd.setCursor(0,0);
lcd.print("Valeur Pot3");
lcd.setCursor(0,1);
lcd.print(valuepot3,DEC);
}
}
oldvaluepot3 = (valuepot3);
// enreg la valeur du potar 4 dans une variable
if (count==6){
valuepot4 = analogRead (analogIn);
if (valuepot4 != oldvaluepot4){
valuepot4 = analogRead (analogIn);
lcd.setCursor(0,0);
lcd.print("Valeur Pot4");
lcd.setCursor(0,1);
lcd.print(valuepot4,DEC);
}
}
oldvaluepot4 = (valuepot4);
// enreg la valeur du potar 5 dans une variable
if (count==1){
valuepot5 = analogRead (analogIn);
if (valuepot5 != oldvaluepot5){
valuepot5 = analogRead (analogIn);
lcd.setCursor(0,0);
lcd.print("Valeur Pot5");
lcd.setCursor(0,1);
lcd.print(valuepot5,DEC);
}
}
oldvaluepot5 = (valuepot5);
// enreg la valeur du potar 6 dans une variable
if (count==5){
valuepot6 = analogRead (analogIn);
if (valuepot6 != oldvaluepot6){
valuepot6 = analogRead (analogIn);
lcd.setCursor(0,0);
lcd.print("Valeur Pot6");
lcd.setCursor(0,1);
lcd.print(valuepot6,DEC);
}
}
oldvaluepot6 = (valuepot6);
// enreg la valeur du potar 7 dans une variable
if (count==3){
valuepot7 = analogRead (analogIn);
if (valuepot7 != oldvaluepot7){
valuepot7 = analogRead (analogIn);
lcd.setCursor(0,0);
lcd.print("Valeur Pot7");
lcd.setCursor(0,1);
lcd.print(valuepot7,DEC);
}
}
oldvaluepot7 = (valuepot7);
// enreg la valeur du potar 8 dans une variable
if (count==7){
valuepot8 = analogRead (analogIn);
if (valuepot8 != oldvaluepot8){
valuepot8 = analogRead (analogIn);
lcd.setCursor(0,0);
lcd.print("Valeur Pot8");
lcd.setCursor(1,1);
lcd.print(valuepot8,DEC);
}
}
oldvaluepot8 = (valuepot8);
}
}