Livre interactif pour enfant avec capteur de pression

Porteur(s) du projet : Vincent Rosier (DSAA 1), Damien MUTI (Prof. de Numérique)

Date : 03/2021

Contexte : Micro-projet de cours

Fichiers :

Liens : https://www.instructables.com/Interfacing-Force-Sensitive-Resistor-to-Arduino/

Capteurs/Actionneurs :

Carte Arduino Uno /Seeduino

Capteur de pression (force)

Intentions : explication du projet et objectifs

Dans le cadre d'une édition jeunesse, l'objectif est de réaliser un livre interactif afin de susciter la manipulation et de rendre acteur l'enfant. À l'aide d'un capteur de pression dissimulé dans une page, des sons et/ou formes seront générés sur Processing lorsque l'enfant appuieras sur celui-ci. Ces sons et/ou formes pourront varier en intensité (sonore / taille de la forme / couleur) ou bien se multiplier en fonction de la force transmise sur le capteur.

Plans et schémas de fonctionnement

. Faire varier l'intensité d'une led

Programmes

. Programme Arduino : faire varier l'intensité d'une led

int fsrAnalogPin = 0; / FSR connecté a A0

int LEDpin = 11; / D11 pate de la LED

int fsrReading; / lecture du capteur FSR

int LEDbrightness;

void setup() {

// déclare ledPin comme une sortie numérique
Serial.begin(9600); // ouverture du port série
pinMode(LEDpin, OUTPUT);

}

void loop() {

fsrReading = analogRead(fsrAnalogPin);
Serial.print("Analog reading = ");
Serial.println(fsrReading);

/ Degrès d'intentsité de la luminosité de la LED

LEDbrightness = map(fsrReading, 0, 1023, 0, 255);
// La LED devient plus brillante lorsqu'on appuie plus fort
analogWrite(LEDpin, LEDbrightness);

delay(100); }

. Programme Arduino : Variation forme graphique

int firstSensor = 0; / first analog sensor

int inByte = 0; / incoming serial byte

void setup() {

// start serial port at 9600 bps:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}

pinMode(2, INPUT); // digital sensor is on digital pin 2
establishContact(); // send a byte to establish contact until receiver responds

}

void loop() {

// if we get a valid byte, read analog ins:
if (Serial.available() > 0) {
// get incoming byte:
inByte = Serial.read();
// read first analog input, divide by 4 to make the range 0-255:
firstSensor = analogRead(A0)/4;
// send sensor values:
Serial.write(firstSensor);
delay(10); // patienter 10ms (à voir...)
}

}

void establishContact() {

while (Serial.available() <= 0) {
Serial.print('A'); // send a capital A
delay(300);
}

}

Réalisation de la maquette