Visualizza messaggio singolo
Vecchio 14 ottobre 12, 07:03   #7 (permalink)  Top
faustog_2
User
 
L'avatar di faustog_2
 
Data registr.: 19-07-2008
Residenza: catania
Messaggi: 978
altra soluzione

altra alternativa potrebbe essere la seguente....

piuttosto che inserire il segnale dalla presa allievo maestro, aprire la radio staccare il cavo d'uscita del potenziometro ch6 e ch7, sistemare all'interno un DAC, questa parte richiede delle misurazioni in modo da poter riprodurre fedelmente il lavoro svolto dal potenziometro.

catturati i due valori del Wii, (bastano due assi) ... occorre inviarli a un DAC per ogni canale, va bene anche un 8-bit http://www.ti.com/lit/ds/symlink/dac0808.pdf

il quale però richiede 8 pin, in totale i due DAC 16 pin! Troppi conviene prendere un paio di shift register , per esempio il CD 4094:

PIC - Linguaggio macchina per principianti

dunque i due valori provenienti da Wii possono essere rimappati da 1023 a 256 ..poi lo stesso numero puo essere inviato al 4094 con il seguente sistema:


// program to test using two 4094 shift registers
//
// if everything is correct, it will light up one LED at a time
//
int latchPin = 10;
int clockPin = 11;
int dataPin = 12;
void setup() {
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
digitalWrite(latchPin, 0); //make sure data isn't latched
}
void loop() {
unsigned int outputpattern =1; //stores the output pattern as an unsigned int, that is, two bytes
int pattern_LSB; //the least significant byte (LS of the pattern
int pattern_MSB; //the most significant byte (MS of the pattern
for (int i=0 ; i< 16; i++){
pattern_MSB = outputpattern >>8; //extract the MSB of the pattern by shifting all the bits over by 8
pattern_LSB = outputpattern & B11111111; //extract the LSB of the pattern by bitwise AND
shiftOut(dataPin, clockPin, MSBFIRST, (byte) pattern_MS;
shiftOut(dataPin, clockPin, MSBFIRST, (byte) pattern_LS;
digitalWrite(latchPin, 1); // flick the latch to put the data on the output pins
delay(1);
digitalWrite(latchPin, 0);
delay(100);
outputpattern = outputpattern <<1; // shift the outputpattern left by one bit
}
}



Ovviamente tutto può essere realizzato anche con i Pic 16F questi implementano I2C, dovrebbe essere semplice come con Aruino.

a dopo
fausto

Ultima modifica di faustog_2 : 14 ottobre 12 alle ore 07:08
faustog_2 non è collegato   Rispondi citando