Menu

Pouvez vous m'expliquer ce code ?

-
Bonjour, bonsoir, demain je passe mon exam final coeff 12 pour le bac STI2D sin, cela fait deux ans que malgré le soutient de tout mes professeur l'administration me refuse un changement de filiére, malgré un 20 en HG et 19 en français c'est matière ne comptant que pour coef 2 je me doit de réusir mon projet.

C'est simple je doit afficher un niveau de baterie en reliant la batterie a un arduino et d'un arduino a un écran LCD. pouvez vouis m'expliquer ce code s'il vous plait, merci beaucoup.

Un élève victime du systéme scolaire français.

#include <LiquidCrystal.h>

int battPin = A0;

LiquidCrystal lcd(8,9,10,11,12,13);

void setup() 
{
  lcd.begin(16,2);
  pinMode(battPin, INPUT);
}

void loop() 
{
   int voltReading = analogRead(battPin);
   int volts = (voltReading/1023)*100;
   if (volts == 100)
   {
   lcd.setCursor(12,0);
   lcd.print(volts);
   lcd.print("%");
   delay(1000);
   lcd.clear();
   }
   else if (volts < 10)
   {
   lcd.setCursor(14,0);
   lcd.print(volts);
   lcd.print("%");
   delay(1000);
   lcd.clear();
   }
   else
   {
   lcd.setCursor(13,0);
   lcd.print(volts);
   lcd.print("%");
   delay(1000);
   lcd.clear();
   }
}
Afficher la suite 

Votre réponse

2 réponses

Messages postés
73
Date d'inscription
mardi 21 août 2018
Statut
Membre
Dernière intervention
18 mai 2019
12
0
Merci
#include <LiquidCrystal.h>//on inclus la librairie LiquidCrystal

int battPin = A0; //Définition d'un nombre entier (notation hexadécimale ???)

LiquidCrystal lcd(8,9,10,11,12,13); // déclare une variable LiquidCrystal appelée lcd mode 4 bits et RW pas utilisé (d'après http://www.mon-club-elec.fr/pmwiki_reference_arduino/pmwiki.php?n=Main.LiquidCrystal)

void setup() //Au démarrage du programme 
{
  lcd.begin(16,2);//Initialisation de l'interface (C'est un tableau)
  pinMode(battPin, INPUT);//configuration des pin
}

void loop() //C'est une boucle qui se lance directement 
{
   int voltReading = analogRead(battPin); //On récupère la valeur de la pin de la baterie
   int volts = (voltReading/1023)*100;//On le converti en pourcenttage
   if (volts == 100)//Si le nombre de volt est = à 100 alors
   {
   lcd.setCursor(12,0);//On se positionne dans le tableau du lcd en 12; 0
   lcd.print(volts); //On affiche le nombre de volt (pourcentage)
   lcd.print("%"); //on affiche le % à la fin.
   delay(1000);//On patiente pendant 1seconde
   lcd.clear(); //On efface le texte à l'ecran
   }
   else if (volts < 10) //Sinon si le % de volt est < à 10%, alors :
   {
   lcd.setCursor(14,0);//Meme chose que en haut sauf que cette fois on se met en 14; 0 car cette fois le % fait 1 caractere au lieu de 3 (on garde l'alignement)
   lcd.print(volts);
   lcd.print("%");
   delay(1000);
   lcd.clear();
   }
   else//Si aucun des cas précédent (donc % de volt est < que 100 et > que 10) :
   {
   lcd.setCursor(13,0);//Meme chose que en haut sauf que cette fois on se met en 13; 0 car cette fois le % fait 2 caractere au lieu de 3 (on garde l'alignement)
   lcd.print(volts);
   lcd.print("%");
   delay(1000);
   lcd.clear();
   }
}//On retourne au debut du loop()

Facile avec la docu Arduino -> https://www.arduino.cc/en/Reference/LiquidCrystal
PS : Soit je suis trop fort, soit il y avait rien de compliquer :/
Commenter la réponse de SioGabx
Messages postés
1
Date d'inscription
jeudi 9 mai 2019
Statut
Membre
Dernière intervention
9 mai 2019
0
Merci
#include <stdlib.h>
#include <stdio.h>

typedef struct Task{
char name[50];
int nbr_days;
char status;

}Task;

Task* create_Task(){

Task* task = malloc(sizeof(Task));

printf("nombre");
scanf("%d", &task->nbr_days);
printf("%d\n", task->nbr_days);
printf("nom");
scanf("%s", task->name);
printf("%s\n", task->name);
printf("status");
scanf(" %c", &task->status);
printf("%c\n", task->status);

//printf("%d, %c, %s\n\n", task->nbr_days, task->status, task->name);

return task;
free(task);
}

Task** create_ToDo(int n)
{
Task** task = malloc(sizeof(Task*)*n);

for(int i =0; i<n; i++)
{
printf("La tache %d :", i+1);
task[i] = create_Task();
printf("%d, %c, %s\n\n", task[i]->nbr_days, task[i]->status, task[i]->name);

}
return task;
}

Task** append_before_first_finished(Task** taches, int* tab_size, Task* tache)
{

Task ** task = malloc (sizeof(Task)* (*tab_size +1));
int trouvePremiere = 0;
for (int i = 0; i<*tab_size+1; i++)//+1 car on veut ajouter une case
{
if (trouvePremiere == 0 && taches[i]->status == 'T')
{
trouvePremiere = 1;
task[i] = tache;
}
else if ( trouvePremiere = 1 )
{
task[i] = taches[i-1];
}

else if ( i<= *tab_size){
task[i] = taches[i];
}
}
return task;
}
void afficher(Task** target, int n) {

int i;
for (i = 0; i<n; i++) {
printf("\n%s, %d, %c", target[i]->name, target[i]->nbr_days, target[i]->status);
}

}
void free_ToDo(Task** ToDo, int n) {

int i;
for (i = 0; i<n; i++) {
free(ToDo[i]);
}
free(ToDo);
}

int main()
{
//Task * task = create_Task();
int n = 2;
Task** example = create_ToDo(n);
example = append_before_first_finished(example, &n, create_Task());
afficher(example, n+1);
free_ToDo(example, n);

return 0;
}
Commenter la réponse de guerrier9730