欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1155|回復: 2
打印 上一主題 下一主題
收起左側

這個單片機程序為什么藍色燈不和紅和綠一樣改變亮度

[復制鏈接]
跳轉到指定樓層
樓主
ID:644246 發表于 2019-11-20 11:37 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
char buffer[18];
int red,green,blue;
int RedPin = 6;
int GreenPin = 5;
int BluePin = 4;
int length;//定義一個變量用來表示共有多少個音符
int tonePin = 7; //蜂鳴器的pin


int tune[] =
{
  356,450,600,
};

//曲子的節拍,即音符持續時間
float duration[] =
{
   1,0.5 ,1,
};


void setup()
{
  {
  pinMode(tonePin, OUTPUT); //設置蜂鳴器的pin為輸出模式
  length = sizeof(tune) / sizeof(tune[0]); //這里用了一個sizeof函數,查出數組里有多少個音符
  }
  Serial.begin(9600);
  Serial.flush();
  pinMode(RedPin, OUTPUT);
  pinMode(GreenPin, OUTPUT);
  pinMode(BluePin, OUTPUT);
}


void loop()
{
  if (Serial.available() > 0)
  {
    int index=0;
    delay(100);
    int numChar = Serial.available();
    if (numChar>15)
    {
      numChar=15;
    }
    while (numChar--)
    {
      buffer [index++] = Serial.read();
    }
    splitString(buffer);
  }
}


void splitString(char* data)
{
  Serial.print("Data entered: ");
  Serial.println(data );
  char* parameter;
  parameter = strtok (data, ",");
  while (parameter !=NULL)
  {
    setLED(parameter);
    parameter = strtok (NULL, ",");
  }
  for (int x=0; x<16; x++)
  {
    buffer[x]='\0';
  }
  Serial.flush();
}


void setLED(char* data)
{
    delay(500);
     if ((data[0] == 'g')|| (data[0] == 'G'))
     {
      int Ans = strtol(data+1,NULL,10);
      Ans = constrain(Ans,0,255);
      analogWrite(GreenPin, Ans);
      Serial.print("Green is set to: ");
      Serial.println(Ans);
    }
     if ((data[0] == 'b')|| (data[0] == 'B'))
     {
      int Ans = strtol(data+1,NULL,10);
      Ans = constrain(Ans,0,255);
      analogWrite(BluePin, Ans);
      Serial.print("Blue is set to: ");
      Serial.println(Ans);
     }
      if ((data[0] == 'r')|| (data[0] == 'R'))
    {
      int Ans = strtol(data+1,NULL,10);
      Ans = constrain(Ans,0,255);
      analogWrite(RedPin, Ans);
      Serial.print("Red is set to: ");
      Serial.println(Ans);
    }
   
    yinyue();
  }


  void yinyue()
{
   for (int x = 0; x < length; x++) //循環音符的次數
   {
     tone(tonePin, tune[x]); //依次播放tune數組元素,即每個音符
     delay(400 * duration[x]); //每個音符持續的時間,即節拍duration,400是調整時間的越大,曲子速度越慢,越小曲子速度越快
     noTone(tonePin);//停止當前音符,進入下一音符
   }
   delay(500);//等待0.5秒后,循環重新開始
}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:235200 發表于 2019-11-20 12:05 | 只看該作者
不同顏色的發光二極管要求的電流不一樣,電壓降也不一致,需根據元件參數調整好后才能控制其亮度
回復

使用道具 舉報

板凳
ID:645755 發表于 2019-11-20 14:39 | 只看該作者
不用顏色的LED燈,相同亮度下所需的電流不同。要么你修改外部LED燈匹配的限流電阻,要么就要修改程序里面控制LED燈的時間才間接調節亮度
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表