Discussion:Binome2020-8 : Différence entre versions

De Wiki de bureau d'études PeiP
(Commentaires sur votre BE)
 
(3 révisions intermédiaires par 2 utilisateurs non affichées)
Ligne 13 : Ligne 13 :
 
La première carte est conçue, réalisée et soudée. Le Wiki laisse une incertitude sur le fait que vous ayez ou non réussi à programmer la carte. Si je me souviens bien vous arrivez à programmer l'ATTiny84 et vous essayez de récupérer la température ?
 
La première carte est conçue, réalisée et soudée. Le Wiki laisse une incertitude sur le fait que vous ayez ou non réussi à programmer la carte. Si je me souviens bien vous arrivez à programmer l'ATTiny84 et vous essayez de récupérer la température ?
  
 +
== Evaluation finale ==
  
 +
=== Carte intermédiaire ===
  
Capteur de température à utiliser
+
Un Wiki exceptionnel, une carte conçue, réalisée et programmée. Excellente partie intermédiaire.
https://www.mouser.fr/Sensors/Temperature-Sensors/Board-Mount-Temperature-Sensors/_/N-7gz7qZ1yzvvqxZscv7?P=1yof1wlZ1z0jh8gZ1z0jilpZ1z0y176&Ns=Pricing|0
 
  
= CODE DE L'ENSEIGNANT =
+
=== Carte finale ===
 +
* Conception : Carte originale, insertion d'un capteur de température SPI et d'un connecteur pour une alimentation par dynamo.
 +
* Réalisation : Carte fournie testée mais mémoire et capteur soudés par les élèves.
 +
* Programmation : Fonctionnalité clef USB OK. Utilisation du capteur SPI OK.
  
#define BROCHE_TEMP      A2
+
=== Appréciation globale ===
#define ATTENTE_COMPTEUR  1000
+
Il ne manquait plus que l'intégration entre le programme d'affichage de la température et le programme MassStorage de la LUFA. Beaucoup de travail, très bon Wiki, inachevé mais sur la partie optionnelle. Excellent bureau d'études.
#define NB_SEGMENTS      7
 
#define NB_AFFICHEURS    3
 
  
//#define COMPTEUR
+
= Informations diverses =
#define TEMPERATURE
 
  
const int segments[NB_SEGMENTS]={7,6,3,4,5,1,0};
+
Capteur de température à utiliser
const int afficheurs[NB_AFFICHEURS]={10,9,8};
+
https://www.mouser.fr/Sensors/Temperature-Sensors/Board-Mount-Temperature-Sensors/_/N-7gz7qZ1yzvvqxZscv7?P=1yof1wlZ1z0jh8gZ1z0jilpZ1z0y176&Ns=Pricing|0
 
 
void effacer(void){
 
int i;
 
for(i=0;i<NB_SEGMENTS;i++)
 
  digitalWrite(segments[i],HIGH);
 
}
 
 
 
int zero[]={0,1,2,3,4,5,-1};
 
int un[]={1,2,-1};
 
int deux[]={0,1,3,4,6,-1};
 
int trois[]={0,1,2,3,6,-1};
 
int quatre[]={1,2,5,6,-1};
 
int cing[]={0,2,3,5,6,-1};
 
int six[]={0,2,3,4,5,6,-1};
 
int sept[]={0,1,2,-1};
 
int huit[]={0,1,2,3,4,5,6,-1};
 
int neuf[]={0,1,2,3,5,6,-1};
 
 
 
int *chiffres[]={zero,un,deux,trois,quatre,cing,six,sept,huit,neuf};
 
  
void afficher(int c){
+
== Programme de l'enseignant ==
  if(c<0 || c>9) return;
 
  int i=0;
 
  while(chiffres[c][i]>=0){
 
    digitalWrite(segments[chiffres[c][i]],LOW);
 
    i++;
 
    }
 
  }
 
  
void setup() {
+
#define BROCHE_TEMP      A2
  // put your setup code here, to run once:
+
#define ATTENTE_COMPTEUR  1000
 +
#define NB_SEGMENTS      7
 +
#define NB_AFFICHEURS    3
 +
 +
//#define COMPTEUR
 +
#define TEMPERATURE
 +
 +
const int segments[NB_SEGMENTS]={7,6,3,4,5,1,0};
 +
const int afficheurs[NB_AFFICHEURS]={10,9,8};
 +
 +
void effacer(void){
 
   int i;
 
   int i;
   for(i=0;i<NB_SEGMENTS;i++){
+
   for(i=0;i<NB_SEGMENTS;i++)
    pinMode(segments[i],OUTPUT);
 
 
     digitalWrite(segments[i],HIGH);
 
     digitalWrite(segments[i],HIGH);
    }
 
  for(i=0;i<NB_AFFICHEURS;i++){
 
    pinMode(afficheurs[i],OUTPUT);
 
    digitalWrite(afficheurs[i],HIGH);
 
    }
 
 
   }
 
   }
 
+
#define NB_CHIFFRES 3
+
int zero[]={0,1,2,3,4,5,-1};
int compteur[NB_CHIFFRES]={0,0,0};
+
int un[]={1,2,-1};
long ms=0;
+
int deux[]={0,1,3,4,6,-1};
 
+
int trois[]={0,1,2,3,6,-1};
void loop() {
+
int quatre[]={1,2,5,6,-1};
  int i;
+
int cing[]={0,2,3,5,6,-1};
  for(i=0;i<NB_AFFICHEURS;i++){
+
int six[]={0,2,3,4,5,6,-1};
    digitalWrite(afficheurs[i],LOW);
+
int sept[]={0,1,2,-1};
    afficher(compteur[i]);
+
int huit[]={0,1,2,3,4,5,6,-1};
    delay(1);
+
int neuf[]={0,1,2,3,5,6,-1};
    digitalWrite(afficheurs[i],HIGH);
+
    effacer();
+
int *chiffres[]={zero,un,deux,trois,quatre,cing,six,sept,huit,neuf};
    }
+
  if(millis()-ms<ATTENTE_COMPTEUR) return;
+
void afficher(int c){
  ms=millis();
+
  if(c<0 || c>9) return;
#ifdef TEMPERATURE
+
  int i=0;
  int adc=analogRead(BROCHE_TEMP);
+
  while(chiffres[c][i]>=0){
  float volts=adc* 3.3/1024.0;
+
    digitalWrite(segments[chiffres[c][i]],LOW);
  float temp=(volts-0.5)*100;
+
    i++;
  compteur[2]=((int)temp)/10;
+
    }
  compteur[1]=((int)temp)%10;
+
  }
  compteur[0]=((int)temp*10)%10;
+
#endif
+
void setup() {
#ifdef COMPTEUR
+
  // put your setup code here, to run once:
  for(i=NB_CHIFFRES-1;i>=0;i--){
+
  int i;
    if(compteur[i]<9){ compteur[i]++; break; }
+
  for(i=0;i<NB_SEGMENTS;i++){
    else compteur[i]=0;
+
    pinMode(segments[i],OUTPUT);
  }
+
    digitalWrite(segments[i],HIGH);
#endif
+
    }
}
+
  for(i=0;i<NB_AFFICHEURS;i++){
 +
    pinMode(afficheurs[i],OUTPUT);
 +
    digitalWrite(afficheurs[i],HIGH);
 +
    }
 +
  }
 +
 +
#define NB_CHIFFRES 3
 +
int compteur[NB_CHIFFRES]={0,0,0};
 +
long ms=0;
 +
 +
void loop() {
 +
  int i;
 +
  for(i=0;i<NB_AFFICHEURS;i++){
 +
    digitalWrite(afficheurs[i],LOW);
 +
    afficher(compteur[i]);
 +
    delay(1);
 +
    digitalWrite(afficheurs[i],HIGH);
 +
    effacer();
 +
    }
 +
  if(millis()-ms<ATTENTE_COMPTEUR) return;
 +
  ms=millis();
 +
#ifdef TEMPERATURE
 +
  int adc=analogRead(BROCHE_TEMP);
 +
  float volts=adc* 3.3/1024.0;
 +
  float temp=(volts-0.5)*100;
 +
  compteur[2]=((int)temp)/10;
 +
  compteur[1]=((int)temp)%10;
 +
  compteur[0]=((int)temp*10)%10;
 +
#endif
 +
#ifdef COMPTEUR
 +
  for(i=NB_CHIFFRES-1;i>=0;i--){
 +
    if(compteur[i]<9){ compteur[i]++; break; }
 +
    else compteur[i]=0;
 +
  }
 +
#endif
 +
}

Version actuelle datée du 24 mai 2021 à 15:44

Commentaires sur votre BE

Wiki

Voilà, ça c'est une page Wiki rédigée !

Il manque les images de votre schéma et de votre circuit imprimé et les photos de votre PCB soudé.

Ce sera très bien une fois complété.

Travail

La première carte est conçue, réalisée et soudée. Le Wiki laisse une incertitude sur le fait que vous ayez ou non réussi à programmer la carte. Si je me souviens bien vous arrivez à programmer l'ATTiny84 et vous essayez de récupérer la température ?

Evaluation finale

Carte intermédiaire

Un Wiki exceptionnel, une carte conçue, réalisée et programmée. Excellente partie intermédiaire.

Carte finale

  • Conception : Carte originale, insertion d'un capteur de température SPI et d'un connecteur pour une alimentation par dynamo.
  • Réalisation : Carte fournie testée mais mémoire et capteur soudés par les élèves.
  • Programmation : Fonctionnalité clef USB OK. Utilisation du capteur SPI OK.

Appréciation globale

Il ne manquait plus que l'intégration entre le programme d'affichage de la température et le programme MassStorage de la LUFA. Beaucoup de travail, très bon Wiki, inachevé mais sur la partie optionnelle. Excellent bureau d'études.

Informations diverses

Capteur de température à utiliser https://www.mouser.fr/Sensors/Temperature-Sensors/Board-Mount-Temperature-Sensors/_/N-7gz7qZ1yzvvqxZscv7?P=1yof1wlZ1z0jh8gZ1z0jilpZ1z0y176&Ns=Pricing%7C0

Programme de l'enseignant

#define BROCHE_TEMP       A2
#define ATTENTE_COMPTEUR  1000
#define NB_SEGMENTS       7
#define NB_AFFICHEURS     3

//#define COMPTEUR 
#define TEMPERATURE 

const int segments[NB_SEGMENTS]={7,6,3,4,5,1,0};
const int afficheurs[NB_AFFICHEURS]={10,9,8};

void effacer(void){
 int i;
 for(i=0;i<NB_SEGMENTS;i++)
   digitalWrite(segments[i],HIGH);
 }

int zero[]={0,1,2,3,4,5,-1};
int un[]={1,2,-1};
int deux[]={0,1,3,4,6,-1};
int trois[]={0,1,2,3,6,-1};
int quatre[]={1,2,5,6,-1};
int cing[]={0,2,3,5,6,-1};
int six[]={0,2,3,4,5,6,-1};
int sept[]={0,1,2,-1};
int huit[]={0,1,2,3,4,5,6,-1};
int neuf[]={0,1,2,3,5,6,-1};

int *chiffres[]={zero,un,deux,trois,quatre,cing,six,sept,huit,neuf}; 

void afficher(int c){
  if(c<0 || c>9) return;
  int i=0;
  while(chiffres[c][i]>=0){
    digitalWrite(segments[chiffres[c][i]],LOW);
    i++;
    }
  }

void setup() {
  // put your setup code here, to run once:
  int i;
  for(i=0;i<NB_SEGMENTS;i++){
    pinMode(segments[i],OUTPUT); 
    digitalWrite(segments[i],HIGH);
    }
  for(i=0;i<NB_AFFICHEURS;i++){
    pinMode(afficheurs[i],OUTPUT); 
    digitalWrite(afficheurs[i],HIGH);
    }
  }

#define NB_CHIFFRES 3
int compteur[NB_CHIFFRES]={0,0,0};
long ms=0;

void loop() {
  int i;
  for(i=0;i<NB_AFFICHEURS;i++){
    digitalWrite(afficheurs[i],LOW);
    afficher(compteur[i]);
    delay(1);
    digitalWrite(afficheurs[i],HIGH);
    effacer();
    }
  if(millis()-ms<ATTENTE_COMPTEUR) return;
  ms=millis();
#ifdef TEMPERATURE
  int adc=analogRead(BROCHE_TEMP);
  float volts=adc* 3.3/1024.0;
  float temp=(volts-0.5)*100;
  compteur[2]=((int)temp)/10;
  compteur[1]=((int)temp)%10;
  compteur[0]=((int)temp*10)%10;
#endif
#ifdef COMPTEUR
  for(i=NB_CHIFFRES-1;i>=0;i--){
    if(compteur[i]<9){ compteur[i]++; break; }
    else compteur[i]=0;
  }
#endif
}