Prototipo giocattolo

Ciao, devo fare un prototipo il più vicino possibile alla realtà per il mio progetto.
Il giocattolo è una periferica di gioco che si collega ad un tablet attraverso una app.
Il prototipo deve, semplicemente illuminarsi su tutte e sei le facce del cubo, e se girato in una determinata posizione, che deve essere decisa in precedenza, rimanere acceso solamente sulla faccia stabilita, che è quella superiore e comunicare un segnale al pc che faccia partire una immagine ed un sonoro.
Teoricamente il processo dovrebbe andare in loop continuare per almeno due tre volte.
Io pensavo di utilizzare una Arduino BT (Bluetooth) e come accellerometro a tre assi ADXL345
Potete aiutarmi?! :slight_smile:

Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento: Regolamento

Arduino BT non è più in vendita.
In base alle dimensioni di questo cubo potresti prendere un Arduino Micro o Arduino Nano.
Per il bluetooth trovi dei moduli già pronti e una guida sulla sezione Megatopic del forum.
Idem per l'accelerometro. Meglio prendere un modulo per facilitare le connessioni.
Su internet trovi tanti esempi applicativi.
Inizia a buttar giù un po' di codice e poi lo rivediamo tutti insieme.

:wink: Grazie per le dritte!!

Ciao, mi sono finalmente arrivati tutti i componenti.
per adesso vorrei riuscire a far accendere 1 led se l'accellerometro (mma7361) è in orizzontale, (x,z in bolla),nel caso in cui non lo sia invece far accendere un altro led ad intermittenza...
mi potete dare una mano con lo skhetch...

/**********************************************************/

int x = A0; // X
int y = A1; // Y
int z = A2; // Z

void setup() {
Serial.begin(9600);
analogReference(EXTERNAL);
Serial.println("Setup MMA7361L");
}
void loop() {
x=analogRead(0);
y=analogRead(1);
z=analogRead(2);

Serial.print(x);
Serial.print(" ");
Serial.print(y);
Serial.print(" ");
Serial.println(z);

if (x>=500 && x<=520)
if (y>=500 && y<=520)
{fisso;
delay(5000);
}
else
{
lampeggio;
}

void lampeggio(){// accende iled da 1 a 6

}
void fisso(){ // accende il led 6

grazieeeee

Inizia con if ((x>=500 && x<=520) && (y>=500 && y<=520))

Delay(5000)? Sicuro?
E se nel frattempo x e y vanno fuori range? Come te ne accorgi?
Ti consiglio di utlizzare la funzione millis().

int x = A0; // X
int y = A1; // Y
int z = A2; // Z
int ledPin = 9;
int ledPin2 = 12;
void setup() {
Serial.begin(9600);
analogReference(EXTERNAL);
Serial.println("Setup MMA7361L");
}
void loop() {
x=analogRead(0);
y=analogRead(1);
z=analogRead(2);

Serial.print(x);
Serial.print(" ");
Serial.print(y);
Serial.print(" ");
Serial.println(z);

if ((x>=500 && x<=520) && (y>=500 && y<=520))
{fisso;

}
else
{
lampeggio;
}
}

void lampeggio(){
digitalWrite(ledPin, HIGH); // accende il led
delay(1000); // attende un seconso (1000 millisecondi)
digitalWrite(ledPin, LOW); // spegne il led
delay(1000); // attende un secondo prima di ripartire
}

void fisso(){
digitalWrite(ledPin2, HIGH); // accende il led// accende il led 6
}

Il codice postato va racchiuso tra gli appositi tag (simbolo # sopra alle faccine) altrimenti ne diventa difficile la lettura. Sicuro di aver letto il regolamento linkato qualche post più in su (reply 1)?

ciao

Brado:
Ti consiglio di utlizzare la funzione millis().

http://www.leonardomiliani.com/2013/programmiamo-i-compiti-con-millis/