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

Arduino Project 010 - Serial Controlled Mood Lamp

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

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://parentscn.com/?id=260

标签: Arduino

相关文章

Arduino Project 050 - IR Remote Control Light

Arduino Project 050 - IR Remote Control Light

Project 50 IR Remote Control Light/* Project 50 IR Remote Control Ligh...

Arduino Project 030A - Dual Motor Driver L298N

Arduino Project 030A - Dual Motor Driver L298N

L298N Dual Motor Driver Project Description  The L298N Motor Driver is a control...

Arduino Project 023A - Liquid Crystal Displays - Autoscroll

Arduino Project 023A - Liquid Crystal Displays - Autoscroll

Before wiring the LCD screen to your Arduino board we suggest to solder a pin header strip to the 14...

Arduino Project 002 - LED SOS Morse Code Singal

Arduino Project 002 - LED SOS Morse Code Singal

Arduino 电子编程--灯项目及控制,主要使用Arduino编程控制LED灯,实现基本控制Project 2 LED闪烁S.O.S信号。项目2 Project 2 S.O.S...

Arduino Project 021 -  LED Dot Matrix Display - Scrolling Message

Arduino Project 021 - LED Dot Matrix Display - Scrolling Message

There are many different ways to drive LEDs. Using shift registers is one way and they have their a...

Arduino Project 044 - Simple RFID Reader

Arduino Project 044 - Simple RFID Reader

Arduino Programming Basic -- Making an RFID ReaderProject 44 Simple RFID ReaderWiring Diagram Betwee...