CODE | Serial Controlled Mood Lamp - Arduino Project 010

RonWang3 years ago (2023-07-28)电子编程 COD41

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. 

Project 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);
 }
}
Share with Friends:

Related Articles

C02 | The Concept of Algorithms

C02 | The Concept of Algorithms

C语言教程02:算法的概念算法(Algorithm)是在有限步骤内求解某一问题所使用的一组定义明确的规则。计算机算法 是用计算机求解一个具体问题或执行特定任务的一组有序的操作步骤(或指令),是构成计算…

CODE | Dual Motor Driver L298N - Arduino Project 030A

CODE | Dual Motor Driver L298N - Arduino Project 030A

L298N Dual Motor Driver Project Description The L298N Motor Driver is a controller that uses an…

Mounting a Hard Drive on a CentOS Server

Mounting a Hard Drive on a CentOS Server

Centos服务器挂载硬盘1. 查看服务器上未挂载的磁盘(磁盘有普通磁盘,高效磁盘,SSD磁盘Bashfdisk -l…

CODE | Simple RFID Reader - Arduino Project 044

CODE | Simple RFID Reader - Arduino Project 044

Arduino Programming Basic -- Making an RFID ReaderAdvanced RFID with ArduinoRFID (Radio Frequency Id…

How to Choose the Right Wire Stripper Tool?

How to Choose the Right Wire Stripper Tool?

剥线钳是弱电工程师、内线电工、电动机修理、仪器仪表电工及电子制作爱好者常用的工具之一,用来供操作者剥除电线头部的表面绝缘层。剥线钳可以使得电线被切断的绝缘皮与电线分开,可以在不损坏内部金属线层的情况下…

How to Selection Soldering for your Maker

How to Selection Soldering for your Maker

如何选用合适的电络铁?初级电子制作与维修之工具选择电烙铁是我们电子制作和装配中,导线、延长线连接,电子元件的安装和拆卸的必备工具。尤其是在电器维修中也是最常用的工具。电烙铁的分类电络铁的分类方式很多,…

Post a Comment

Anonymous

Feel free to share your thoughts and opinions here.