Différences entre versions de « Formations:Askoria-AES-Bingo de l'eau »

De wikilab
Ligne 47 : Ligne 47 :
  
 
==Code==
 
==Code==
 +
 +
<code>
 +
<pre>
 +
 +
 +
// www.mekanizmalar.com 
 +
// 2015/03/29 
 +
// Modified by My Human Kit
 +
// Le 20-12-2017 for a project with AES students in Askoria Rennes
 +
 +
 +
/* 
 +
Demonstrates the use of an array to hold pin numbers. 
 +
Each time the push button is pressed, next LED in the 
 +
sequence will be turned on one by one.
 +
And at the fifth step the melody is going on.
 +
Then at the next pressed all the leds turned off.
 +
*/ 
 +
 +
#include "pitches.h"
 +
 +
// notes in the melody:
 +
 +
int melody[] =
 +
  {
 +
  NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3, 0, NOTE_B3, NOTE_C4
 +
  };
 +
 +
// note durations: 4 = quarter note, 8 = eighth note, etc.:
 +
 +
int noteDurations[] =
 +
  {
 +
  4, 8, 8, 4, 4, 4, 4, 4
 +
  };
 +
 +
const int buttonPin = 2; // the number of the pushbutton pin 
 +
const int ledPin1 = 3;  // the number of the LED pin 
 +
const int ledPin2 = 4;  // the number of the LED pin 
 +
const int ledPin3 = 5;  // the number of the LED pin 
 +
const int ledPin4 = 6;  // the number of the LED pin 
 +
const int ledPin5 = 7;  // the number of the LED pin 
 +
const int ledPin6 = 8;  // the number of the LED pin 
 +
 +
 +
// variables will change: 
 +
int buttonState = 0;    // variable for reading the pushbutton status 
 +
int buttonPressCount = 0; 
 +
int numberOfLED = 6; 
 +
 +
////////////////////////////////////////////////////////////////////////
 +
 +
void setup()
 +
 +
  { 
 +
  // initialize the LED pin as an output: 
 +
  pinMode(ledPin1, OUTPUT); 
 +
  pinMode(ledPin2, OUTPUT); 
 +
  pinMode(ledPin3, OUTPUT); 
 +
  pinMode(ledPin4, OUTPUT); 
 +
  pinMode(ledPin5, OUTPUT); 
 +
 
 +
  // initialize the pushbutton pin as an input: 
 +
  pinMode(buttonPin, INPUT); 
 +
  } 
 +
 +
////////////////////////////////////////////////////////////////////////
 +
 +
void loop()
 +
 +
 +
  // read the state of the pushbutton value: 
 +
  buttonState = digitalRead(buttonPin);
 +
 
 +
  // check if the pushbutton is pressed. 
 +
  // if it is, the buttonState is HIGH: 
 +
  if (buttonState == HIGH)
 +
 
 +
    {
 +
      if (buttonPressCount % numberOfLED == 0)
 +
 
 +
      { 
 +
      // turn LED1 on: 
 +
      digitalWrite(ledPin1, HIGH); 
 +
      }
 +
     
 +
      else
 +
 
 +
      { 
 +
      digitalWrite(ledPin1, LOW); 
 +
      } 
 +
 
 +
      if (buttonPressCount % numberOfLED == 1)
 +
     
 +
      { 
 +
      // turn LED1 and 2 on: 
 +
      digitalWrite(ledPin1, HIGH);
 +
      digitalWrite(ledPin2, HIGH); 
 +
      }
 +
     
 +
      else
 +
     
 +
      { 
 +
      digitalWrite(ledPin2, LOW); 
 +
      } 
 +
 
 +
      if (buttonPressCount % numberOfLED == 2)
 +
     
 +
      { 
 +
      // turn LED1 and 2 and 3 on: 
 +
      digitalWrite(ledPin1, HIGH);
 +
      digitalWrite(ledPin2, HIGH);
 +
      digitalWrite(ledPin3, HIGH); 
 +
      }
 +
     
 +
      else
 +
     
 +
      { 
 +
      digitalWrite(ledPin3, LOW); 
 +
      } 
 +
 
 +
      if (buttonPressCount % numberOfLED == 3)
 +
     
 +
      {
 +
      // turn LED1 and 2 and 3 and 4 on:
 +
      digitalWrite(ledPin1, HIGH);
 +
      digitalWrite(ledPin2, HIGH);
 +
      digitalWrite(ledPin3, HIGH); 
 +
      digitalWrite(ledPin4, HIGH); 
 +
      }
 +
     
 +
      else
 +
     
 +
      { 
 +
      digitalWrite(ledPin4, LOW); 
 +
      } 
 +
 
 +
      if (buttonPressCount % numberOfLED == 4)
 +
     
 +
      {     
 +
      // turn LED1 and 2 and 3 and 4 and 5 and Tone on:
 +
      digitalWrite(ledPin1, HIGH);
 +
      digitalWrite(ledPin2, HIGH);
 +
      digitalWrite(ledPin3, HIGH); 
 +
      digitalWrite(ledPin4, HIGH); 
 +
      digitalWrite(ledPin5, HIGH); 
 +
 +
      // MELODY //
 +
      // iterate over the notes of the melody:
 +
      for (int thisNote = 0; thisNote < 8; thisNote++)
 +
     
 +
      {
 +
      // to calculate the note duration, take one second
 +
      // divided by the note type.
 +
      //e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc.
 +
      int noteDuration = 1000 / noteDurations[thisNote];
 +
      tone(8, melody[thisNote], noteDuration);
 +
 +
      // to distinguish the notes, set a minimum time between them.
 +
      // the note's duration + 30% seems to work well:
 +
      int pauseBetweenNotes = noteDuration * 1.30;
 +
      delay(pauseBetweenNotes);
 +
      // stop the tone playing:
 +
      noTone(8);
 +
      }
 +
      }
 +
     
 +
      else
 +
     
 +
      { 
 +
      digitalWrite(ledPin5, LOW); 
 +
      } 
 +
 +
      if (buttonPressCount % numberOfLED == 5)
 +
      { 
 +
      // turn LED1 and 2 and 3 and 4 and 5 and Tone off:
 +
      digitalWrite(ledPin1, LOW);
 +
      digitalWrite(ledPin2, LOW);
 +
      digitalWrite(ledPin3, LOW); 
 +
      digitalWrite(ledPin4, LOW); 
 +
      digitalWrite(ledPin5, LOW); 
 +
      }
 +
     
 +
      else
 +
     
 +
      { 
 +
      //digitalWrite(ledPin6, LOW); 
 +
      } 
 +
     
 +
      buttonPressCount++; 
 +
      delay(400); 
 +
     
 +
    } 
 +
 +
 +
 +
</pre>
 +
</code>
  
 
==Schéma==
 
==Schéma==

Version du 20 décembre 2017 à 11:57

Description du projet

ce projet s'adresse à un adute de 30 ans avec des troubles d'envahissement du développement (TED). C'est une personne autonome et avec toutes ces capacités motrices, et verbales. Il aime et utilise la tablette et des jeux vidéos. Il comprend les consignes et le déroulement de son emploi du temps fait à base de pictogrames. Après observation et utilisation de différentes méthodes pour l'inciter à s'hydrater régulièrement. C'est une personne à qui si on ne demande, où ne lui propose pas de boire, il ne ce servira pas de lui même. Après reflexion entre professionnels et lors de la session technique (My Human Kit) entre AES, un projet individuel et adapté à été soumis. Celui ci est concu dans la même conception que son emploi du temps, qui se lit de haut en bas.


Réaliser un outil visuel lui permettant de se rappeler de s'hydrater plusieur fois par jours. L'objectif était que l'outil soit ludique et attrayant pour l'ammener à une réussite.(accès à différents renforcateurs) L'outil est concu de façon qu'il soit autonome sur l'hydratation. L'inciter à se servir à boire seul. Répartition d'1 litre d'eau... 4 fois dans la journée.



Les renforçateurs (méthode pédagogique basée sur la récompense)en fin d'utilisation de l'outil sont aux choix (un disque tournant avec comme exemple des pictos:tablette, un carré de chocolat, de la musique, etc....)


Cahier des charges

  • transportable (pour le ramener à domicile)
  • ludique
  • élément visuel qui permet d'évaluer et mesurer la quantité d'eau absorbée.
  • C'est la personne qui déclenche un élément qui permet de compter le nombre de fois qu'il a bu.
  • Rechargable




Analyse de l'existant

Equipe

Matériel nécessaire

Outils nécessaires

Coût

Code



// www.mekanizmalar.com  
// 2015/03/29  
// Modified by My Human Kit
// Le 20-12-2017 for a project with AES students in Askoria Rennes


/*  
Demonstrates the use of an array to hold pin numbers.  
Each time the push button is pressed, next LED in the  
sequence will be turned on one by one.
And at the fifth step the melody is going on.
Then at the next pressed all the leds turned off.
*/  

#include "pitches.h"

// notes in the melody:

int melody[] = 
  {
  NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3, 0, NOTE_B3, NOTE_C4
  };

// note durations: 4 = quarter note, 8 = eighth note, etc.:

int noteDurations[] = 
  {
  4, 8, 8, 4, 4, 4, 4, 4
  };

 const int buttonPin = 2; // the number of the pushbutton pin  
 const int ledPin1 = 3;   // the number of the LED pin  
 const int ledPin2 = 4;   // the number of the LED pin  
 const int ledPin3 = 5;   // the number of the LED pin  
 const int ledPin4 = 6;   // the number of the LED pin  
 const int ledPin5 = 7;   // the number of the LED pin  
 const int ledPin6 = 8;   // the number of the LED pin  

 
 // variables will change:  
 int buttonState = 0;     // variable for reading the pushbutton status  
 int buttonPressCount = 0;  
 int numberOfLED = 6;  

////////////////////////////////////////////////////////////////////////
 
 void setup() 
 
  {  
  // initialize the LED pin as an output:  
  pinMode(ledPin1, OUTPUT);  
  pinMode(ledPin2, OUTPUT);  
  pinMode(ledPin3, OUTPUT);  
  pinMode(ledPin4, OUTPUT);  
  pinMode(ledPin5, OUTPUT);  
  
  // initialize the pushbutton pin as an input:  
  pinMode(buttonPin, INPUT);  
  }  

////////////////////////////////////////////////////////////////////////
 
 void loop() 
 
{  
  // read the state of the pushbutton value:  
  buttonState = digitalRead(buttonPin); 
   
  // check if the pushbutton is pressed.  
  // if it is, the buttonState is HIGH:  
  if (buttonState == HIGH) 
  
    { 
      if (buttonPressCount % numberOfLED == 0) 
   
      {  
      // turn LED1 on:  
      digitalWrite(ledPin1, HIGH);  
      }
      
      else
   
      {  
      digitalWrite(ledPin1, LOW);  
      }  
   
      if (buttonPressCount % numberOfLED == 1) 
      
      {  
      // turn LED1 and 2 on:  
      digitalWrite(ledPin1, HIGH);
      digitalWrite(ledPin2, HIGH);  
      }
      
      else
      
      {  
      digitalWrite(ledPin2, LOW);  
      }  
   
      if (buttonPressCount % numberOfLED == 2) 
      
      {  
      // turn LED1 and 2 and 3 on:  
      digitalWrite(ledPin1, HIGH);
      digitalWrite(ledPin2, HIGH);
      digitalWrite(ledPin3, HIGH);  
      }
      
      else
      
      {  
      digitalWrite(ledPin3, LOW);  
      }  
   
      if (buttonPressCount % numberOfLED == 3) 
      
      {
      // turn LED1 and 2 and 3 and 4 on: 
      digitalWrite(ledPin1, HIGH);
      digitalWrite(ledPin2, HIGH);
      digitalWrite(ledPin3, HIGH);  
      digitalWrite(ledPin4, HIGH);  
      }
       
      else
      
      {  
      digitalWrite(ledPin4, LOW);  
      }  
   
      if (buttonPressCount % numberOfLED == 4) 
      
      {      
      // turn LED1 and 2 and 3 and 4 and 5 and Tone on:
      digitalWrite(ledPin1, HIGH);
      digitalWrite(ledPin2, HIGH);
      digitalWrite(ledPin3, HIGH);  
      digitalWrite(ledPin4, HIGH);   
      digitalWrite(ledPin5, HIGH);  

      // MELODY //
      // iterate over the notes of the melody:
      for (int thisNote = 0; thisNote < 8; thisNote++) 
      
      {
      // to calculate the note duration, take one second
      // divided by the note type.
      //e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc.
      int noteDuration = 1000 / noteDurations[thisNote];
      tone(8, melody[thisNote], noteDuration);

      // to distinguish the notes, set a minimum time between them.
      // the note's duration + 30% seems to work well:
      int pauseBetweenNotes = noteDuration * 1.30;
      delay(pauseBetweenNotes);
      // stop the tone playing:
      noTone(8);
      }
      }
      
      else
      
      {  
      digitalWrite(ledPin5, LOW);  
      }  

      if (buttonPressCount % numberOfLED == 5) 
      {  
      // turn LED1 and 2 and 3 and 4 and 5 and Tone off:
      digitalWrite(ledPin1, LOW);
      digitalWrite(ledPin2, LOW);
      digitalWrite(ledPin3, LOW);  
      digitalWrite(ledPin4, LOW);   
      digitalWrite(ledPin5, LOW);  
      }
      
      else
      
      {  
      //digitalWrite(ledPin6, LOW);  
      }  
      
      buttonPressCount++;  
      delay(400);  
      
    }  
}  


Schéma

Arduino-five-led-control-in-sequence-with-a-button-large.jpg