Hallo,
Bedankt voor jouw reactie.
Ik wist niet dat de code in een code block moest, ik had in de Arduino IDE op kopiëren voor forum geklikt.
Ik gebruik een Arduino UNO en een EasyDriver Stepper Motor Driver van SparkFun voor motorsturing (EasyDriver - Stepper Motor Driver - ROB-12779 - SparkFun Electronics)
Voor het afspelen van MP3 bestanden gebruik ik een MP3 Player Shield ook van SparkFun (SparkFun MP3 Player Shield - DEV-12660 - SparkFun Electronics)
Maar goed, dat ter zijde, hier mijn code:
1e tabblad:
int sensor = A0;
int led1 = A1;
int led2 = A2;
int led3 = A3;
int led4 = A4;
int led5 = A5;
int button = 12;
int dirpin = 10;
int steppin = 11;
int buttonState;
int sensorValue;
void setup()
{
Serial.begin(9600);
pinMode(sensor, INPUT);
pinMode(button, INPUT);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(dirpin, OUTPUT);
pinMode(steppin, OUTPUT);
}
void loop()
{
buttonState = digitalRead(button);
sensorValue = analogRead(sensor);
Serial.print("button: ");
Serial.println(buttonState);
Serial.print("sensor: ");
Serial.println(sensorValue);
delay(10);
//-----------------------------------HET GAAT OM DIT GEDEELTE
if(buttonState == HIGH)
{
playSong(2);
rotateDeg(360, .5);
}
//-----------------------------------HET GAAT OM DIT GEDEELTE
if (sensorValue > 515 && sensorValue < 517)
{
setLed();
playSong(4);
}
if(sensorValue > 517 && sensorValue < 519)
{
setLed();
playSong(5);
}
if(sensorValue > 519 && sensorValue < 521)
{
playSong(6);
}
if(sensorValue > 521 && sensorValue < 523)
{
setLed();
playSong(7);
}
if(sensorValue > 523 && sensorValue < 525)
{
setLed();
playSong(5);
}
if(sensorValue > 527 && sensorValue < 529)
{
setLed();
playSong(6);
}
if(sensorValue > 529 && sensorValue < 531)
{
setLed();
playSong(7);
}
if(sensorValue > 531 && sensorValue < 533)
{
setLed();
playSong(8);
}
if(sensorValue > 535 && sensorValue < 537)
{
setLed();
playSong(9);
}
if(sensorValue > 537 && sensorValue < 539)
{
setLed();
playSong(10);
}
}
MP3 afspelen tabblad:
#include <SPI.h>
#include <SdFat.h>
#include <SdFatUtil.h>
#include <SFEMP3Shield.h>
SdFat sd;
SFEMP3Shield MP3player;
void playSong(int song){
Serial.begin(9600);
//start the shield
sd.begin(SD_SEL, SPI_HALF_SPEED);
MP3player.begin();
MP3player.playTrack(song);
}
motor roteren tabblad:
void rotateDeg(float deg, float speed){
int dir = (deg > 0)? HIGH:LOW;
digitalWrite(dirpin,dir);
int steps = abs(deg)*(1/0.225);
float usDelay = (1/speed) * 70;
for(int i=0; i < steps; i++){
digitalWrite(steppin, HIGH);
delayMicroseconds(usDelay);
digitalWrite(steppin, LOW);
delayMicroseconds(usDelay);
}
}
Willekeurig LED'jes aan en uit laten gaan:
int state = random(0, 2);
void setLed()
{
state = random(0, 2);
digitalWrite(led1, state);
state = random(0, 2);
digitalWrite(led2, state);
state = random(0, 2);
digitalWrite(led3, state);
state = random(0, 2);
digitalWrite(led4, state);
state = random(0, 2);
digitalWrite(led5, state);
}
Het gaat om het eerste if-statement. De LEDjes aan en uit zetten gaat wel goed, ook in combinatie met het geluid. Alleen als ik geluid afspeel, als de motor is aangesloten, gaat mijn motor trillen en doet daarna niets meer.
Hopelijk hebben jullie zo voldoende informatie.
Bedankt alvast,
NiSh