Fiz um teste divertido com o led RGB e vim compartilhar aqui.
O led RGB nada mais é do que 3 leds em um, 3 pinos positivos (red, green e blue) e um negativo compartilhado. Assim como os leds comuns se utiliza um resistor de 330 ohm para cada pino positivo.
O que é realmente divertido desse tipo de led com o Arduino é que você pode realmente fazer qualquer cor com ele. E as cores são controladas individualmente pelo Arduino com números de 0 a 255. Infelizmente para se fazer isso precisamos usar de 3 pinos analógicos, mas existem chips que possibilitam controlar mais leds com poucos pinos.
Nesse teste eu fiz com que 3 potenciômetros controlassem cada um uma cor do led. Fiz com 2 tipos de potenciômetro porque era o que eu tinha, mas isso não faz realmente diferença.
Desculpe pela qualidade do vídeo, foi feito com um celular.
O esquema do fritzing
Código
Arquivo: rgbl.pde
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
#include "NewSoftSerial.h"
NewSoftSerial seriOne(9, 10);
NewSoftSerial seriTwo(5, 6);
long waitTill;
void setup() {
Serial.begin(9600);
pinMode(9, INPUT);
pinMode(10, OUTPUT);
pinMode(5, INPUT);
pinMode(6, OUTPUT);
pinMode(13, OUTPUT);
seriOne.begin(9600);
seriTwo.begin(9600);
waitTill = millis() + 2000;
Serial.println("To no none");
digitalWrite(13, HIGH);
}
void loop()
{
/*
if (mySerial.available()) {
Serial.print((char)mySerial.read());
}
mySerial.print("Test");
if (Serial.available()) {
mySerial.print("Test");
tone(6, 440, 200);
delay(200);
}
*/
while(seriOne.available())
{
Serial.println("To no one");
seriTwo.print(seriOne.read());
}
while(seriTwo.available())
{
int data = seriTwo.read();
Serial.println("To no two");
Serial.println(data);
}
if(waitTill < millis() && waitTill != 0)
{
waitTill = 0;
Serial.println("To no zero");
seriOne.print("Hello, world?");
}
Serial.print("seriTwo: ");
Serial.print(seriTwo.available());
Serial.print(" | seriOne: ");
Serial.println(seriOne.available());
}
