极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11754|回复: 3

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

[复制链接]
发表于 2014-10-7 17:22:32 | 显示全部楼层 |阅读模式
我是按照这个教程做的 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);   //set  Red * 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);
    }

}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

 楼主| 发表于 2014-10-7 17:25:26 | 显示全部楼层
求问各位大神,是我连接有问题还是,代码问题?
回复 支持 反对

使用道具 举报

发表于 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可能根本就不亮。
回复 支持 反对

使用道具 举报

发表于 2015-7-24 11:24:45 | 显示全部楼层
不错的项目参考,可以设计个声音控制的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-16 21:07 , Processed in 0.062281 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表