#include <Adafruit_NeoPixel.h>
#define PIN 5 //lampu Kiri
#define PIN1 6 //Lampu Kanan
int TBKiri = A1;
int TBStop = A2;
int TBHazard = A3;
int TBKanan = A4;
int i;
int hz;
int f,d;
Adafruit_NeoPixel strip = Adafruit_NeoPixel(6, PIN, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel strip1 = Adafruit_NeoPixel(6, PIN1, NEO_GRB + NEO_KHZ800);
char hold0 = 0;
char hold1 = 0;
char hold2 = 0;
char hold3 = 0;
char hold4 = 0;
char data0, data1, data2, data3,data4;
void setup() {
pinMode(TBKiri, INPUT_PULLUP);
pinMode(TBKanan, INPUT_PULLUP);
pinMode(TBStop, INPUT_PULLUP);
pinMode(TBHazard, INPUT_PULLUP);
pinMode(2,OUTPUT); //speaker
pinMode(7,OUTPUT); //blaster LED 7
pinMode(8,OUTPUT); //blaster LED 8
pinMode(11,INPUT_PULLUP); //button 11
pinMode(12,INPUT_PULLUP); //button 12
strip.begin();
strip.show(); // Initialize all pixels to 'off'
strip1.begin();
strip1.show(); // Initialize all pixels to 'off'
}
void loop() {
key();
if(digitalRead(11)==LOW){ //if button 11 is pressed
digitalWrite(7,HIGH); //turn on LED 7
//A fast falling tone makes a better laser sound (like the laser 'bullet' is getting further away) than a single tone does.
// Whoop up
for(hz=400;hz>=100;hz--)
{
tone(2, hz);
delay(0);
delayMicroseconds(hz);
}
}
else if(digitalRead(12)==LOW){ //if button 12 is pressed
digitalWrite(8,HIGH); // turn on LED 8
// This tone falls from 1000 to 700, playing a different tone every 1 millsecond
// Whoop up
for (hz = 800; hz > 200; hz--) {
tone(2, hz);
delay(0);
delayMicroseconds(hz);
}
for (hz = 200; hz < 800; hz++) {
tone(2, hz);
delay(0);
delayMicroseconds(hz);
}
}
else{ //Otherwise if no buttons are pressed
digitalWrite(7,LOW); //turn off the LEDs
digitalWrite(8,LOW);
noTone(2); //stop the tone on the speaker
}
}
void key(){
data0 = digitalRead(A1);
data1 = digitalRead(A2);
data2 = digitalRead(A3);
data3 = digitalRead(A4);
data4 = digitalRead(A5);
if ( data0 == 0){
if(hold0 == 0){
hold0 = 0;
Senkiri();
}
}
else{
hold0 = 0;
}
if ( data1 == 0){
if(hold1 == 0){
hold1 = 0;
Hazard();
}
}
else{
hold1 = 0;
}
if ( data2 == 0){
if(hold2 == 0){
hold2 = 0;
Stop();
}
}
else{
hold2 = 0;
}
if ( data3 == 0){
if(hold3 == 0){
hold3 = 0;
Senkanan();
}
}
else{
hold3 = 0;
}
if ( data4 == 0){
if(hold4 == 0){
hold4 = 0;
}
}
else{
hold4 = 0;
}
}
void Senkiri(){
kiri(strip.Color(255, 255, 0), 10); // Red
kiri(strip.Color(0, 0, 0), 10); // Red
}
void kiri(uint32_t c, uint8_t wait) {
for(uint16_t i=0; i<strip1.numPixels(); i++){
strip.setPixelColor(i, c);
strip.show();
delay(50);
}
}
void Senkanan(){
kanan(strip1.Color(255, 255, 0), 10); // Red
kanan(strip1.Color(0, 0, 0), 10); // Red
}
void kanan(uint32_t c, uint8_t wait) {
for(uint16_t i=0; i<strip1.numPixels(); i++){
strip1.setPixelColor(i, c);
strip1.show();
delay(50);
}
}
void Stop(){
berhenti(strip.Color(255, 0, 0), 2); // Red
berhenti(strip.Color(0, 0, 0), 2); // Red
berhenti(strip.Color(0, 0, 255), 2); // Red
berhenti(strip.Color(0, 0, 0), 2); // Red
}
void berhenti(uint32_t c, uint8_t wait) {
for(uint16_t i=0; i<strip.numPixels(); i++){
strip1.setPixelColor(i, c);
strip1.show();
strip.setPixelColor(i, c);
strip.show();
delay(10);
}
}
void Hazard(){
tengah(strip1.Color(255, 255, 0), 10); // Red
tengah(strip.Color(0, 0, 0), 10); // Red
}
void tengah(uint32_t c, uint8_t wait) {
for(int i=0;i<strip1.numPixels(); i++){
strip1.setPixelColor(i, c);
strip1.show();
strip.setPixelColor(i, c);
strip.show();
delay(50);
}
}
uint32_t Wheel(byte WheelPos) {
if(WheelPos < 85) {
return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
} else if(WheelPos < 170) {
WheelPos -= 85;
return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
} else {
WheelPos -= 170;
return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
}
}