Bonjour, j'ai actuellement un projet à faire pour dans deux semaines, avec Arduino.
Le probleme étant que c'est tout nouveau pour nos professeurs, qu'ils sont partis voir les stages des licences, que l'on a aucune aide, aucun support, et qu'on a tout ca a faire en trois semaines à peine ...
Voici le SUjet du projet :
But : Programmer un clavier musical à deux touches
Fonctionnalités :
• Deux leds de couleurs différentes seront associés au deux touches. Chaque touche allume une led.
Le toucher sur les deux capteurs génère respectivement un son sinusoïdal de fréquence 82 Hz et 110 Hz (le MI et le LA guitare). La génération des sinus se fera par les tableaux et les pointeurs.
L'appuie sur les deux touches génère un mélange des deux notes• Un potentiomètre permettra de régler le volume du son généré.
• Le volume sera affiché sur 3 leds suivant la plage dans laquelle il se trouve. Un volume dans le premier tiers allumera une led, le deuxième tiers deux led et le dernier tiers les 3 leds. Dans ce dernier cas, un mail d'alerte sera envoyé.
• On enregistrera dans un tableau de 40 éléments l'ensemble des notes jouées. Ce tableau sera affiché sur la sortie série d’arduino.Contraintes :
•Le stockage des données se fera dans des tableaux de deux façons différentes : la notation classique et avec les pointeurs.
Toute aide serait la bienvenue, voici le programme que j'ai crée comme ébauche ..
#include "TinkerKit.h"
TKTouchSensor touch0(I0);
TKTouchSensor touch1(I1);TKLed led(O0);
TKLed led1(O1);
TKLed led2(O3);
TKLed led3(O4);
TKLed led4(O5);int pot=analogRead(I2);
void setup() {
Serial.begin(9600);
}void loop(){
if (touch0.get() == HIGH) {
led.on();float f=80; //en Hz
float w=2PIf;
float volume=analogRead(I2);
float t =millis()/1000.0; //1000.0 pour passer en float
int value=(volume/8)(1+sin(wt)); // 1Hz max doit tre égal à 256
//int value = 128.0*(1+sin(wt)); //sans volume
analogWrite(12,value);
Serial.println(millis()/1000); // temps en secondes
Serial.println(value);} else {
led.off();}
if (touch1.get() == HIGH) {
led1.on();float f=110; //en Hz
float w=2PIf;
float volume=analogRead(I2);
float t =millis()/1000.0; //1000.0 pour passer en float
int value=(volume/8)(1+sin(wt)); // 1Hz max doit tre égal à 256
//int value = 128.0*(1+sin(wt)); //sans volume
analogWrite(12,value);
Serial.println(millis()/1000); // temps en secondes
Serial.println(value);}
else {
led1.off();
}
if (pot < 330){
led2.on();
led3.off();
led4.off();
}
else if (pot > 330 and pot < 660){
led2.on();
led3.on();
led4.off();
}
else {
led2.on();
led3.on();
led4.on();
}Serial.println(pot);
}
Mes connaissances sont très limitées, si je ne me trompe pas je suis en mesure :
- Deux leds de couleurs différentes seront associés au deux touches. Chaque touche allume une led.
- Le toucher sur les deux capteurs génère respectivement un son sinusoïdal de fréquence 82 Hz et 110 Hz (le MI et le LA guitare).
- Un potentiomètre permettra de régler le volume du son généré
- Le volume sera affiché sur 3 leds suivant la plage dans laquelle il se trouve. Un volume dans le premier tiers allumera une led, le deuxième tiers deux led et le dernier tiers les 3 leds.
Reste :
- La génération des sinus se fera par les tableaux et les pointeurs.
- L'appuie sur les deux touches génère un mélange des deux notes
- On enregistrera dans un tableau de 40 éléments l'ensemble des notes jouées. Ce tableau sera affiché sur la sortie série d’arduino.
- Dans ce dernier cas, un mail d'alerte sera envoyé.
Voici, je manque donc de compétences, toute aide serait la bienvenue, dans l'optique ou il reste très peu de temps je pourrais éventuellement penser a une quelconque rémunération, me contacter pour plus d'informations; Merci