当前位置:首页 > 科学研究 > 电子编程 > 正文内容

Arduino Project 010 - Serial Controlled Mood Lamp

RonWang1年前 (2024-07-23)电子编程640

For Project 10, you will revisit the circuit from Project 8 — RGB Mood Lamp, but you’ll now delve into the world of serial communications. You’ll control your lamp by sending commands from the PC to the Arduino using the Serial Monitor in the Arduino IDE. Serial communication is the process of sending data one bit at a time across a communication link. 

This project also introduces how to manipulate text strings. So, set up the hardware as you did in Project 8 and enter the new code. 

项目10 Serial Controlled Mood Lamp

08 RGB Mood Lamp Circuit

/* Coding Ron Wang
   July 23rd 2024
   Autaba support for coding hardware
 */
// Project 10 - Serial controlled mood lamp
char buffer[18];
int red, green, blue;
int RedPin = 11;
int GreenPin = 10;
int BluePin = 9;
void setup()
{
 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); // let the buffer fill up
 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, " ,");
}
 // Clear the text and serial buffers
 for (int x=0; x<16; x++) {
 buffer[x]='\0';
 }
 Serial.flush();
}
void setLED(char* data) {
 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);
 }
 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);
 }
}

版权声明:本文为原创文章,版权归donstudio所有,欢迎分享本文,转载请保留出处!

本文链接:http://www.donstudio.cn/?id=260

标签: Arduino

相关文章

C语言调试运行环境Pelles C的安装

C语言调试运行环境Pelles C的安装

C语言调试运行环境之TurboC一文介绍了在32位Windows系统下安装C语言运行环境之TubroC,但是由于TurobC只能在32位系统下运行,导致现在很多Windows10和Windows 11...

Arduino Project 005 - LED Chase Lights

Arduino Project 005 - LED Chase Lights

You’re going to use a string of LEDs (10 in total) to make an LED chase effect, similar to that used...

 Arduino Project 033 - 4 Digital 7 Segment Display

Arduino Project 033 - 4 Digital 7 Segment Display

Showing Heep and number 0-9 on a Common Anode 7-segment LED display. Displays the numbers 0-9 on the...

Arduino Programming Basic - Serial Monitor

Arduino Programming Basic - Serial Monitor

Arduino 程序基础,介绍Arduino程序的基本组成,第一部分编写数个例程,讲解关于变量及变量名称,串口监视器,if循环,for循环,while循环等。第二部分介绍了函数,全局变量,局部变量和静...

Arduino Project 008 - RGB LED Mood Lamp

Arduino Project 008 - RGB LED Mood Lamp

In the last project, you learned how to adjust the brightness of an LED using the PWM capabilities o...

Arduino Project 012 - Piezo Sounder Melody Player

Arduino Project 012 - Piezo Sounder Melody Player

Rather than using the piezo to make annoying alarm sounds, why not use it to play a melody? You are...