Att göra taktil 3D utskrifter Talk (12 / 12 steg)
Steg 12: Skiss programvara för sex mössa sensorer:
#include < CapacitiveSensor.h >
#include < VoiceShield.h >
/*
* Touch händelse ljud spelare
*
* Med hjälp av SpikenzieLab röst sköld, spela en olika ljud beroende
* på vilka touch trycktes sensor.
*
* Version 0.1 - 12 oktober 2014
* Luis Carlos Bañuelos Chacon och Cesar Valle
* luiscarlos.banuelos
*/
/*
* Instruktioner
*
* 1. På konfiguration,
* ändra CS_NUM med antalet sensorer som behövs,
* ändra CS_THRESHOLD genom att minska antalet om sensorerna inte svarar
* och fler om de är för känslig,
* ändra VS_VOICES för att matcha uttrycker programmerade i röst skölden.
*
* 2. På rad kapacitiva sensorer, initieras touch sensorer genom att ange den
* gemensamma pin och PIN-koden där sensorn är ansluten.
*
* 3. På utbud av ljud, i samma ordning som utbudet av kapacitiv givare Visa
* ID för att ljudet ska spelas upp när du trycker på sensorn.
*/
/*
* Konfiguration
*/
#define CS_NUM 6 / / Hur många touch sensorer
#define CS_SAMPLES 30 / / hur många prover för att ta när mätning cap sensorn
#define CS_THRESHOLD 30 / / läsa tröskeln att betrakta som en touch event
#define VS_VOICES 80 / / antal röster programmerad på röst sköld
/*
-Matris av kapacitiv givare
*
* Första parametern är gemensamma stiftet, det bör vara samma för alla instanser.
* Andra parametern är givarstaven.
*/
CapacitiveSensor cs [] = {
CapacitiveSensor (6, 7),
CapacitiveSensor (6, 8),
CapacitiveSensor (6, 9),
CapacitiveSensor (6, 10),
CapacitiveSensor (6, 11),
CapacitiveSensor (6, 12),
};
/*
-Matris av ljud
*
* Denna matris innehåller ID för ljudet varje sensor har att göra.
* Beställa bör motsvara till utbudet av kapacitiva sensorer.
*/
int ljud [] = {
13,
28,
38,
29,
19,
4
};
/*
* Initiera röst sköld
*/
VoiceShield vs(VS_VOICES);
/*
* readCS
*
* Läser utbudet av kapacitiva sensorer och returnerar
* vilken sensor vidrörs eller -1 om inga.
*/
int readCS() {
för (int jag = 0; jag < CS_NUM; i ++) {
om (cs[i].capacitiveSensor(CS_SAMPLES) > CS_THRESHOLD) tillbaka i;
}
återvända -1;
}
void setup() {vs
; //pinMode (13, OUTPUT);
}
void loop() {
int cs_pressed = readCS(); Läs rad sensorer
om (cs_pressed > = 0) {/ / om en sensor vidrörs
digitalWrite (13, 1); Visa evenemang på LED
vs. ISDPLAY_to_EOM(Sound[cs_pressed]); Spela upp ljud
Delay(1000); Liten fördröjning för LED
digitalWrite (13, 0); Stänga av led
While(readCS() == cs_pressed); Blockera tills sensor släpps
}
}