Stap 4: Speeltijd
Hier is een video demonstratie van wat mijn lichaamsbouw klonk als bij gebruik van een batterij aangedreven audioversterker: http://youtu.be/JzKzRq4mcdk
//____________________________________________________
/*
write_pot (0, 0); 7555car drempel,
write_pot (1, 0); 7555car de kwijting,
write_pot (2, 0); 7555car Volume,
write_pot (3, 0); 7555mod vol, effectief modulatie index
write_pot (4, 0); 7555mod drempel
write_pot (5, 0); 7555mod kwijting
als drempel en geen kwijting worden verplaatst samen op één chip (vervoerder of modulator)
ze bepalen frequentie, toen onafhankelijk van elkaar bewogen, zij zeggenschap toonhoogte maar met wisselende
puslewidth of duty afstandspercentage. Hiermee wijzigt u het timbre van de output.
*/
Tuning voorinstellingen.
schaal 0-127 door dit veel voor elke pot, volume anders dan andere parameters wordt geschaald.
int data_scale [] = {2, 2, 1,25, 1,25, 2, 2};
u wellicht om te spelen met dit nummer om uw controller nummers bekleed met de 6 parameters.
int controllerOffSet = 0; Dit nummer is specifieke op de novation midi controller
int DATAOUT = 11;
int DATAIN = 12; MISO - niet gebruikt, maar een deel van de ingebouwde SPI
int SPICLOCK = 13; SCK
int SLAVESELECT = 10; SS
int incomingByte = 0;
int Opmerking = 0;
int vel = 0;
int controller = 0;
int waarde = 0;
byte weerstand = 0;
int index;
int outdex;
VOID Setup
{
Set MIDI baud-rate:
Serial.begin(31250);
Debugger, of seriële controle baud
Serial.begin(9600);
byte ik = 0;
byte clr = 0;
Setup pinnen om te werken met SPI
pinMode (DATAOUT, uitvoer);
pinMode (DATAIN, INPUT);
pinMode(SPICLOCK,OUTPUT);
pinMode(SLAVESELECT,OUTPUT);
digitalWrite(SLAVESELECT,HIGH); apparaat uitschakelen
SPCR = 01010000
Interrupt uitgeschakeld, spi ingeschakeld, msb 1e master, clk lage wanneer nutteloos,
monster op voorrand van clk, systeem klok/4 (snelste)
SPCR = (1 << SPE) | (1 << MSTR);
CLR = SPSR;
CLR = SPDR;
delay(10);
een LED Flash en flash elk digitale pot adres (voor foutopsporing) en om stilte van het circuit
Alle potten ingesteld op minimum/maximum aantal weerstand en weer terug
voor (ik = 0; ik < 6; i ++)
{
digitalWrite (2, HIGH);
delay(100);
write_pot(i,0);
digitalWrite (2, laag);
delay(100);
}
delay(1000); wacht een tweede
voor (ik = 0; ik < 6; i ++)
{
digitalWrite (2, HIGH);
delay(100);
write_pot (i, 255);
digitalWrite (2, laag);
delay(100);
255 = volledige weerstand...
}
}
hoofdprogramma
void loop
{
Als (Serial.available() > 0) {}
incomingByte = Serial.read();
zien of er een specifieke berichtindeling als een specifieke MIDI status byte wordt gedetecteerd, dan
behandeling van de volgende twee binnenkomende bytes als gegevensbytes
//
Als (incomingByte == 176) {/ / status bericht voor midi cc kanaal 1
delay(1);
de volgende byte opnemen als de controllernummer
controller = Serial.read() - controllerOffSet;
delay(1);
record de derde byte als de gegevens van de domeincontroller of de waarde
waarde = Serial.read();
}
Als de controllernummer binnen het juiste bereik is,
Gebruik de controllernummer om te stellen van het adres (1 van de 6 weerstanden) en
de waarde van deze controller gebruiken om de weerstand van de genoemde adres
Als (controller < 6 & & controller > = 0) {}
Sommige parameters wellicht schalen,
write_pot (controller, ((waarde * data_scale[controller])));
een LED inschakelen wanneer gegevens worden verzonden (voor de gebruiker feedback/foutopsporing)
digitalWrite (2, HIGH);
delay(1);
} / / end als controller
} / / end als seriële
delay(1);
digitalWrite (2, laag);
} / / einde van de hoofdlus
//-----------------------------------------------------------custom function calls--------------------
functie voor het verzenden van gegevens naar een bepaald adres
byte write_pot (int adres, int value)
{
digitalWrite(SLAVESELECT,LOW);
2 byte opcode
spi_transfer(Address);
spi_transfer(Value);
digitalWrite(SLAVESELECT,HIGH); vrijgeven van de chip, signaal einde overdracht
}
functie voor overzetten gegevens over SPI
char spi_transfer (vluchtige char gegevens)
{
SPDR = gegevens; De overdracht starten
terwijl (!. (SPSR & (1 << SPIF))) Wachten op het einde van de transmissie
{
};
retourneren SPDR; retourneren van de ontvangen byte
}