Control a 120v outlet with a 5V arduino.
/* LucidTronix Arduino Lamp * http://www.lucidtronix.com/tutorials/8 * Toggles an electromechanical relay * Relay connected to pin 8 on arduino */ int relay_pin = 8;boolean relay_on = false; // the current state of the lightvoid setup() // run once, when the sketch starts { pinMode(relay_pin, OUTPUT);}void loop() // run over and over again{ digitalWrite(relay_pin, relay_on); delay(4000); // wait 4 seconds relay_on = !relay_on; // if relay is true make it false // if it is false make it true}
/* LucidTronix Arduino Lamp * http://www.lucidtronix.com/tutorials/8 * Toggles an electromechanical relay * Relay connected to pin 8 on arduino * 3 light modes: sound, tactile toggle, and timer. */ int leds[] = {16,17,18,19};int rgb_pins[] = {3,5,6};const int buffer_size = 30;int noises[buffer_size];int cur_index = 0;.int pot_pin = 0;int sound_pin = 1;int mode = 0;int btn_pin = 4;int modes = 4;int wait = 0;int relay_pin = 8;boolean relay_on = false;unsigned int last_timer_switch = 0;unsigned int sound_switch = 0;void setup() // run once, when the sketch starts{ pinMode(relay_pin, OUTPUT); for(int i = 0 ; i < modes; i++ ) pinMode(leds[i], OUTPUT); for(int i = 0 ; i < 3; i++ ) pinMode(rgb_pins[i], OUTPUT); pinMode(btn_pin, INPUT); for(int i = 0 ; i < modes; i++ ) digitalWrite(leds[i], HIGH); delay(1200); for(int i = 0 ; i < modes; i++ ) digitalWrite(leds[i], LOW);}void loop() // run over and over again{ for(int i = 0 ; i < modes; i++ ) digitalWrite(leds[i], LOW); if (mode == 0) button_mode(); if (mode == 1) sound_mode(); if (mode == 2 || mode == 3) timer_mode(); if (relay_on) digitalWrite(relay_pin, HIGH); else digitalWrite(relay_pin, LOW); int val = analogRead(pot_pin); for(int i = 0 ; i < modes; i++ ){ if ( val > i*256 && val < (i+1)*256) mode = i; }}void sound_mode(){ for(int i = 0 ; i < modes; i++ ) digitalWrite(leds[i], LOW); noises[cur_index] = analogRead(sound_pin) >> 4 ; cur_index = (cur_index + 1) % buffer_size; int var = variance(noises, buffer_size); for(int i = 0 ; i < modes; i++ ){ if ( var > (i+1)*128 ) digitalWrite(leds[i], HIGH); } if (var > 512 && millis() - sound_switch > 1000 ) { relay_on = !relay_on; sound_switch = millis(); } delay(20); }void button_mode(){ digitalWrite(leds[0], HIGH); if ( digitalRead(btn_pin) == HIGH) { relay_on = !relay_on; }}void timer_mode(){ digitalWrite(leds[2], HIGH); wait = analogRead(pot_pin); wait *= 10; if ( millis() - last_timer_switch > wait) { relay_on = !relay_on; last_timer_switch = millis(); }}int average(int* array, int length){ int sum = 0; int i; for(i = 0; i < length ; i++){ sum += array[i]; } int avg = sum / length ; return avg;}int variance(int* array, int length){ int dif_sum = 0; int i; int mean = average(array, length); for(i = 0; i < length ; i++){ dif_sum += ((array[i] - mean)*(array[i] - mean)); } int var = dif_sum / length ; return var;}
| Title | Description | # | Cost | Link | Picture |
| Arduino Lamp PCB | This light-bulb-shaped PCB holds an electromechanical relay so it can control 120V power with arduino. | 1 | $7.0 | Link |
|
| ATMEGA168A-AU | IC MCU AVR 16K FLASH 32TQFPValue:1.8 V ~ 5.5 V 20MHz | 1 | $2.43 | Link |
|
| Relay | Small relay, 5V switching voltage, 250VACValue:SPDT | 1 | $1.95 | Link |
|
| Electret Condenser Microphone | MIC COND ANALOG OMNI -44DBValue: -44dB ±2dB 20Hz ~ 20kHz | 1 | $0.96 | Link |
|
| Potentiometer | POT ROTARY, Linear 10K OHM 9MM SNAPINValue:10k | 1 | $0.76 | Link |
|
| Switch | SWITCH SLIDE DPDT 6VDC 0.3A SMTValue:DPDT | 1 | $0.44 | Link |
|
| LED SMD | LED 3X1.5MM 568NM Green Clear SMDValue:2.2V Green | 5 | $0.18 | Link |
|
| Transistors (BJT) - Single | IC TRANS NPN SS GP 200MA TO-92Value:40V 300mV @ 5mA, 50mA 100 @ 10mA, 1V | 1 | $0.18 | Link |
|
Comments: