奔跑的二毛 发表于 2014-10-7 17:22:32

求问用piezo控制RGB灯,不同的震动使灯产生不一样的颜色

我是按照这个教程做的 piezo,不同节奏控制RGB灯变化。但是不成功,我修改了代码还是有问题最后灯只有一个会随拍打 变幻不同颜色,请问是为什么呢?http://www.instructables.com/id/RGBeatz/ 这个是教程地址~





这是代码
int soundSensor1 = 0;   // piezo 1 connect to analog 0
int soundSensor2 = 1;    // piezo 2 connect to analog 1
int threshold = 10;



int sensorReading1 = 0;//var to hold anaolg reading of piezo1
int sensorReading2 = 0;//var to hold anaolg reading of piezo2


//first LED pins//
int LED1R = 3;
int LED1G = 5;
int LED1B = 6;

//second LED pins//
int LED2R = 9;
int LED2G = 10;
int LED2B = 11;


//static LED//
int red1 = 7;
int blue1 = 8;

int red2 = 13;
int blue2 = 12;




int read1 = 0;
int read2 = 0;
void setup(){
Serial.begin(9600);   //set serial output

pinMode(LED1R, OUTPUT);//set pins for first LED
pinMode(LED1G, OUTPUT);
pinMode(LED1B, OUTPUT);

pinMode(LED2R, OUTPUT);//set pins for second LED
pinMode(LED2G, OUTPUT);
pinMode(LED2B, OUTPUT);

pinMode(red1,OUTPUT);    //set Red & Blue pins for third LED
pinMode(blue1,OUTPUT);

pinMode(red2,OUTPUT);   //setRed * Blue pins for fouth LED
pinMode(blue2,OUTPUT);


}
void loop(){

sensorReading1 = analogRead(soundSensor1);//reading in piezo sensors 1 & 2
sensorReading2 = analogRead(soundSensor2);
   
//Serial.println("one");
//Serial.println(sensorReading1);
//Serial.println("two");
//Serial.println(sensorReading2);

read1 = map(sensorReading1,0,10,255,0);//map analog input to RGB scale
read2 = map(sensorReading2,0,10,255,0);

analogWrite(LED1R, read1);//for middle two LEDs scale Red & Blue to sensor input
analogWrite(LED1G, 100);
analogWrite(LED1B, read2);

analogWrite(LED2R, read1);
analogWrite(LED2G, 100);
analogWrite(LED2B, read2);

//four outter two LEDs change from red to Blue at volume threshold
if(sensorReading1 > threshold){

digitalWrite(red1,LOW);
digitalWrite(blue1,HIGH);

digitalWrite(red2,HIGH);
digitalWrite(blue2,LOW);

}
else{
      
    digitalWrite(red1,HIGH);
    digitalWrite(blue1,LOW);
   
    digitalWrite(red2,LOW);
    digitalWrite(blue2,HIGH);
    }

}

奔跑的二毛 发表于 2014-10-7 17:25:26

求问各位大神,是我连接有问题还是,代码问题?

bonarm 发表于 2014-10-8 15:46:31

read1 = map(sensorReading1,0,10,255,0);//map analog input to RGB scale
read2 = map(sensorReading2,0,10,255,0);

这两个压电陶瓷的灵敏度太低了吗?5V*10/1024,只有约50mV,最好加个运放放大一下。另外,map到255~0,试试改为255~100,因为100以下LED可能根本就不亮。

wukongxuetang 发表于 2015-7-24 11:24:45

不错的项目参考,可以设计个声音控制的
页: [1]
查看完整版本: 求问用piezo控制RGB灯,不同的震动使灯产生不一样的颜色