Notions de base Arduino Faire son 5 étapes (avec photos)

Notions de base Arduino Faire son 5 étapes (avec photos)

Le arduino est sûrement le petit micro-contrôleur qui pourrait. vous pouvez faire beaucoup avec elle! Chez instructables avons eu tellement de plaisir avec nos Arduinos, nous voulions montrer à la communauté instructables comment faire quelques-unes des bases!

Ce premier tutoriel va sur la façon de rendre votre arduino faire des sons simples et transformer votre arduino dans le générateur de mini-ton.

Étape 1: Fournitures

Notions de base Arduino Faire son 5 étapes (avec photos)

Pour ce tutoriel, vous aurez besoin de

1 petit haut-parleur 8 ohms
Une carte de arduino
1 bouton-poussoir
Une résistance de 10 k
du fil de noyau plein

Pour mes fins, je l'ai utilisé le Protoshield de Adafruit pour me aider étalez mes affaires!

Étape 2: Lecture d'une mélodie

Notions de base Arduino Faire son 5 étapes (avec photos)

Tout d'abord pour vous lancer, vous devez exécuter le programme de la mélodie par défaut afin que vous vous savez à quoi vous attendre de la arduino.

Vous pouvez obtenir l'exemple mélodie de l'IDE Arduino. Mais juste au cas où le code est ici:

circuit:
* Haut-parleur de 8 ohms sur la broche numérique 8

Ce code est par exemple dans le domaine public.

// notes dans la mélodie:
int mélodie [] = NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3,0, NOTE_B3, NOTE_C4>;

// Note: 4 = durées note trimestre, 8 = croche, etc .:
int noteDurations [] = 4, 8, 8, 4,4,4,4,4>;

void setup () // itérer sur les notes de la mélodie:
for (int thisNote = 0; thisNote < 8; thisNote++)

// pour calculer la durée de la note, prendre un seconde
// divisé par le type de note.
//par exemple. Note = trimestre 1000/4, 1000/8 = croche, etc.
int noteDuration = 1000 / noteDurations [thisNote];
ton (8, mélodie [thisNote], noteDuration);

// distinguer les notes, fixer un temps minimum entre eux.
// durée + 30% de la note semble bien fonctionner:
int pauseBetweenNotes = noteDuration * 1,30;
retard (pauseBetweenNotes);
// arrêter la lecture de ton:
noTone (8);
>
>

void loop () // pas besoin de répéter la mélodie.
>
>

Vous aurez également besoin d'un fichier qui définit vos tons, qui devrait également être dans l'IDE, mais ici il est. Il suffit de copier ce texte dans un fichier .h dans le même répertoire que votre code:
/ *************************************************
* Constantes publiques
************************************************* /

#define NOTE_B0 31
#define NOTE_C1 33
#define NOTE_CS1 35
#define NOTE_D1 37
#define NOTE_DS1 39
#define NOTE_E1 41
#define NOTE_F1 44
#define NOTE_FS1 46
#define NOTE_G1 49
#define NOTE_GS1 52
#define NOTE_A1 55
#define NOTE_AS1 58
#define NOTE_B1 62
#define NOTE_C2 65
#define NOTE_CS2 69
#define NOTE_D2 73
#define NOTE_DS2 78
#define NOTE_E2 82
#define NOTE_F2 87
#define NOTE_FS2 93
#define NOTE_G2 98
#define NOTE_GS2 104
#define NOTE_A2 110
#define NOTE_AS2 117
#define NOTE_B2 123
#define NOTE_C3 131
#define NOTE_CS3 139
#define NOTE_D3 147
#define NOTE_DS3 156
#define NOTE_E3 165
#define NOTE_F3 175
#define NOTE_FS3 185
#define NOTE_G3 196
#define NOTE_GS3 208
#define NOTE_A3 220
#define NOTE_AS3 233
#define NOTE_B3 247
#define NOTE_C4 262
#define NOTE_CS4 277
#define NOTE_D4 294
#define NOTE_DS4 311
#define NOTE_E4 330
#define NOTE_F4 349
#define NOTE_FS4 370
#define NOTE_G4 392
#define NOTE_GS4 415
#define NOTE_A4 440
#define NOTE_AS4 466
#define NOTE_B4 494
#define NOTE_C5 523
#define NOTE_CS5 554
#define NOTE_D5 587
#define NOTE_DS5 622
#define NOTE_E5 659
#define NOTE_F5 698
#define NOTE_FS5 740
#define NOTE_G5 784
#define NOTE_GS5 831
#define NOTE_A5 880
#define NOTE_AS5 932
#define NOTE_B5 988
#define NOTE_C6 1047
#define NOTE_CS6 1109
#define NOTE_D6 1175
#define NOTE_DS6 1245
#define NOTE_E6 1319
#define NOTE_F6 1397
#define NOTE_FS6 1480
#define NOTE_G6 1568
#define NOTE_GS6 1661
#define NOTE_A6 1760
#define NOTE_AS6 1865
#define NOTE_B6 1976
#define NOTE_C7 2093
#define NOTE_CS7 2217
#define NOTE_D7 2349
#define NOTE_DS7 2489
#define NOTE_E7 2637
#define NOTE_F7 2794
#define NOTE_FS7 2960
#define NOTE_G7 3136
#define NOTE_GS7 3322
#define NOTE_A7 3520
#define NOTE_AS7 3729
#define NOTE_B7 3951
#define NOTE_C8 4186
#define NOTE_CS8 4435
#define NOTE_D8 4699
#define NOTE_DS8 4978


Il suffit de le télécharger et brancher votre haut-parleur comme vous voyez dans l'image, positif à la broche 8, négatif à la terre, vous vous entendrez un petit air.

Étape 3: La fonction de tonalité

Jouer de la musique dans la fonction introduit arduino connu sous le nom le ton (). Cette fonction contrôle votre capacité à jouer de la musique. Dans le code, il ressemblera à quelque chose comme ceci:

ton (pin, fréquence, durée)
ou
ton (pin, fréquence)

Où broches est la broche du haut-parleur est relié à, la fréquence est le ton et la durée est hertz combien de temps, en millisecondes.

Si vous utilisez la 2ème convention, pour arrêter le son, vous devez avoir une fonction noTone ().

Dans l'étape précédente pour la mélodie, il fallait inclure le fichier pitches.h. Ce fichier vous donne juste une variable pour chaque note à l'écoute afin que vous ne hertz avez pas travailler les notes de base. Cela rend l'écriture des chansons beaucoup plus facile!

Bonjour forum Instructables,


Je dois déclencher un bouclier VMA02 qui reproduire un son, avec un mouvement du capteur PIR de Arduino.

Avec l'offre des codes,
J'ai réussi à activer à la fois séparément,
Je veux dire, le capteur PIR active un conduit,
et,
le bouclier VMA02 active les sons enregistrés par les fonds.

// // Code VMA02
#comprendre
ISD1700 puce (10); // Initialiser ChipCorder avec
// SS à la broche numérique Arduino 10

int apc = 0;
int vol = 0; // 0 = volume de MAX, 7 = min
int startAddr = 0x10;
int endAddr = 0x2DF;
int inInt = 0;
void setup()
apc = apc | vol; // D0, D1, D2

apc = apc | 0x50; // D4- D6 sélectionnez MIC REC
// apc = apc | 0x00; // D4- D6 sélectionnez ANAIn REC
// apc = apc | 0x10; // D4- D6 sélectionner MIC + ANAIn REC

Serial.begin (9600);
Serial.println ( "Sketch est en cours de démarrage");
>
void loop ()
char c;

if (Serial.available ())
/ * Mise sous tension * /
chip.pu ();
c = Serial.read ();
Interrupteur (c)
cas 'A':
Serial.println (chip.rd_apc (), BIN);
Pause;
cas 'Y':
chip.play ();
Pause;
cas 'P':
chip.stop ();
retard (500);
Pause;
'e':
chip.erase ();
retard (500);
Pause;
case 'R':
chip.rec ();
Pause;
cas 'F':
chip.fwd ();
retard (500);
Pause;
cas 'Z':
chip.g_erase ();
retard (500);
Pause;
case 'Je:
Serial.println (chip.devid (), BIN);
Pause;
cas 'W':
Serial.println (apc, BIN);
chip.wr_apc2 (apc); //
Pause;
case 'S':
Serial.println (chip.rd_status (), BIN);
Pause;
cas '>':
startAddr = SerialIn ();
Serial.print ( "startAddr:");
Serial.println (startAddr);
Pause;
Cas '<':
endAddr = SerialIn ();
Serial.print ( "endAddr:");
Serial.println (endAddr);
Pause;
cas 'y':
chip.set_play (startAddr, endAddr);
Pause;
case 'r':
//chip.set_erase(startAddr,endAddr);
// retard (500);
chip.set_rec (startAddr, endAddr);
Pause;
'e':
chip.set_erase (startAddr, endAddr);
retard (500);
Pause;

>
Serial.print ( "Status --->");
Serial.print (chip.CMD_ERR () "de CMD_ERR": "OK"?);
Serial.print (chip.PU () "PU": "NO PU"?);
Serial.print (chip.RDY () "RDY": "Not_RDY");
Serial.print (chip.rd_status (), BIN);
Serial.println ();
retard (1000);
>
>
int SerialIn () inInt = 0;

tandis que (Serial.available () <= 0)
retard (300);
>
while (Serial.available ()) // obtenir le nouvel octet:
char c = Serial.read ();
// ajouter à la inputString:
inInt = (inInt * 10) + (c-48);
// si le caractère entrant est un saut de ligne, définir un indicateur
// donc la boucle principale peut faire quelque chose à ce sujet:
if (c == '\ n') // stringComplete = true;
Serial.print ( "stringComplete");
>
>
// c = Serial.read () - 48;
// mess (c);
retourner (inInt);

>
/ *
désordre void (int num) Serial.print ( "num");
Serial.println (num);
startAddr = (0x50 * num) + 0x10;
endAddr = (startAddr + 0x50) -1;
Serial.print ( "startAddr:");
Serial.print (startAddr, HEX);
Serial.print ( "- endAddr:");
Serial.println (endAddr, HEX);

/////////////////////////////
// VARS
// temps nous donne le capteur à étalonner (10-60 secondes en fonction de la fiche technique)
int calibrationTime = 30;

// le moment où le capteur émet une faible impulsion
unsigned long int Lowin;

// la quantité de millisecondes du capteur doit être faible
// avant tout mouvement suppose a arrêté
longue pause unsigned int = 5000;

boolean lockLow = true;
boolean takeLowTime;

int pirPin = 3; // la broche numérique connecté à la sortie du détecteur PIR
int ledPin = 13;

// donner le capteur un certain temps pour calibrer
Serial.print ( "capteur calibrer");
pour (int i = 0; i < calibrationTime; i++)Serial.print(".");
retard (1000);
>
Serial.println ( "fait");
Serial.println ( "capteur actif");
retard (50);
>

si (digitalRead (pirPin) == HIGH) digitalWrite (ledPin, HIGH); // la led visualise les capteurs état de broche de sortie
if (lockLow)<
// fait que nous attendons une transition vers LOW avant toute autre sortie est faite:
lockLow = false;
Serial.println ( "---");
Serial.print ( "mouvement détecté à");
Serial.print (Millis () / 1000);
Serial.println ( "s");
retard (50);
>
takeLowTime = true;
>

si (digitalRead (pirPin) == LOW)<
digitalWrite (ledPin, LOW); // la led visualise les capteurs état de broche de sortie

if (takeLowTime) Löwin = Millis (); // enregistrer le temps de la transition de haut en bas
takeLowTime = false; // assurez-vous que cela est fait seulement au début d'une phase LOW
>
// si le capteur est faible pour plus de la pause donnée,
// on suppose que plus aucun mouvement va se passer
si (lockLow - Millis () - Lowin> pause)<
// fait que ce bloc de code est exécuté seulement à nouveau après
// une nouvelle séquence de mouvement a été détecté
lockLow = true;
Serial.print ( "requête est terminée à"); //sortie
Serial.print ((Millis) - (pause) / 1000);
Serial.println ( "s");
retard (50);
>
>
>


Je dois d'unifier les deux mécanismes,
Activer un bruit provoqué par le détecteur PIR.

Si quelqu'un peut me aider,
Je l'apprécierais.

Articles Liés