Pouvez vous m'expliquer ce code ?

Fermé
Pablitoooo - Modifié le 5 mai 2019 à 20:10
guerrier9730 Messages postés 1 Date d'inscription jeudi 9 mai 2019 Statut Membre Dernière intervention 9 mai 2019 - 9 mai 2019 à 14:46
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();
   }
}
A voir également:

2 réponses

SioGabx Messages postés 265 Date d'inscription mardi 21 août 2018 Statut Membre Dernière intervention 17 novembre 2022 100
Modifié le 6 mai 2019 à 11:09
#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 :/
0
guerrier9730 Messages postés 1 Date d'inscription jeudi 9 mai 2019 Statut Membre Dernière intervention 9 mai 2019
9 mai 2019 à 14:46
#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;
}
0