Vous êtes sur la page 1sur 46

PIR alarm

// Uses a PIR sensor to detect movement, buzzes a buzzer


// more info here: http://blog.makezine.com/projects/pir-sensor-arduino-
alarm/
// email me, John Park, at jp@jpixl.net
// based upon:
// PIR sensor tester by Limor Fried of Adafruit
// tone code by michael@thegrebs.com


int ledPin = 13; // choose the pin for the LED
int inputPin = 2; // choose the input pin (for PIR sensor)
int pirState = LOW; // we start, assuming no motion detected
int val = 0; // variable for reading the pin status
int pinSpeaker = 10; //Set up a speaker on a PWM pin (digital 9,
10, or 11)

void setup() {
pinMode(ledPin, OUTPUT); // declare LED as output
pinMode(inputPin, INPUT); // declare sensor as input
pinMode(pinSpeaker, OUTPUT);
Serial.begin(9600);
}

void loop(){
val = digitalRead(inputPin); // read input value
if (val == HIGH) { // check if the input is HIGH
digitalWrite(ledPin, HIGH); // turn LED ON
playTone(300, 160);
delay(150);


if (pirState == LOW) {
// we have just turned on
Serial.println("Motion detected!");
// We only want to print on the output change, not state
pirState = HIGH;
}
} else {
digitalWrite(ledPin, LOW); // turn LED OFF
playTone(0, 0);
delay(300);
if (pirState == HIGH){
// we have just turned of
Serial.println("Motion ended!");
// We only want to print on the output change, not state
pirState = LOW;
}
}
}
// duration in mSecs, frequency in hertz
void playTone(long duration, int freq) {
duration *= 1000;
int period = (1.0 / freq) * 1000000;
long elapsed_time = 0;
while (elapsed_time < duration) {
digitalWrite(pinSpeaker,HIGH);
delayMicroseconds(period / 2);
digitalWrite(pinSpeaker, LOW);
delayMicroseconds(period / 2);
elapsed_time += (period);
}
}


Charlieplexing 12 LED s

#define A 12
#define B 11
#define C 10
#define D 9

#define PIN_CONFIG 0
#define PIN_STATE 1

#define LED_COUNT 12

int matrix[LED_COUNT][2][4] = {
// PIN_CONFIG PIN_STATE
// A B C D A B C D
{ { OUTPUT, OUTPUT, INPUT, INPUT }, { HIGH, LOW, LOW, LOW } }, // AB 0
{ { OUTPUT, OUTPUT, INPUT, INPUT }, { LOW, HIGH, LOW, LOW } }, // BA 1
{ { INPUT, OUTPUT, OUTPUT, INPUT }, { LOW, HIGH, LOW, LOW } }, // BC 2
{ { INPUT, OUTPUT, OUTPUT, INPUT }, { LOW, LOW, HIGH, LOW } }, // CB 3
{ { OUTPUT, INPUT, OUTPUT, INPUT }, { HIGH, LOW, LOW, LOW } }, // AC 4
{ { OUTPUT, INPUT, OUTPUT, INPUT }, { LOW, LOW, HIGH, LOW } }, // CA 5
{ { OUTPUT, INPUT, INPUT, OUTPUT }, { HIGH, LOW, LOW, LOW } }, // AD 6
{ { OUTPUT, INPUT, INPUT, OUTPUT }, { LOW, LOW, LOW, HIGH } }, // DA 7
{ { INPUT, OUTPUT, INPUT, OUTPUT }, { LOW, HIGH, LOW, LOW } }, // BD 8
{ { INPUT, OUTPUT, INPUT, OUTPUT }, { LOW, LOW, LOW, HIGH } }, // DB 9
{ { INPUT, INPUT, OUTPUT, OUTPUT }, { LOW, LOW, HIGH, LOW } }, // CD 10
{ { INPUT, INPUT, OUTPUT, OUTPUT }, { LOW, LOW, LOW, HIGH } } // DC 11
};

void turnOn( int led ) {
pinMode( A, matrix[led][PIN_CONFIG][0] );
pinMode( B, matrix[led][PIN_CONFIG][1] );
pinMode( C, matrix[led][PIN_CONFIG][2] );
pinMode( D, matrix[led][PIN_CONFIG][3] );
digitalWrite( A, matrix[led][PIN_STATE][0] );
digitalWrite( B, matrix[led][PIN_STATE][1] );
digitalWrite( C, matrix[led][PIN_STATE][2] );
digitalWrite( D, matrix[led][PIN_STATE][3] );
}

void setup() {}

void loop() {
for( int l = 0; l < LED_COUNT; l++ ) {
turnOn( l );
delay( 1000 / LED_COUNT );
}
}




#define A 12
#define B 11
#define C 10
#define D 9

#define LED_COUNT 12
#define DDR_BYTE 0
#define PORT_BYTE 1

byte matrix[LED_COUNT][2] = {
// DDR_BYTE PORT_BYTE
// ABCD ABCD
{ 0b00011000, 0b00010000 }, // AB 0
{ 0b00011000, 0b00001000 }, // BA 1
{ 0b00001100, 0b00001000 }, // BC 2
{ 0b00011100, 0b00000100 }, // CB 3
{ 0b00010100, 0b00010000 }, // AC 4
{ 0b00010100, 0b00000100 }, // CA 5
{ 0b00010010, 0b00010000 }, // AD 6
{ 0b00010010, 0b00000010 }, // DA 7
{ 0b00001010, 0b00001000 }, // BD 8
{ 0b00001010, 0b00000010 }, // DB 9
{ 0b00000110, 0b00000100 }, // CD 10
{ 0b00000110, 0b00000010 } // DC 11
};

void turnOn( byte led ) {
DDRB = matrix[led][DDR_BYTE];
PORTB = matrix[led][PORT_BYTE];
}

void setup() {}

void loop() {
for( byte l = 0; l < LED_COUNT; l++ ) {
turnOn( l );
delay( 10 );
}
}


Aquaponics Online Temperature
and Humidity


Control funduino 8 relay channel module with arduino and
ethernet shield


/*
Network Relay System


*/

#include "etherShield.h"
#include "ETHER_28J60.h"

int i, rsize, relay[] = {8, 7, 6, 5, 3, 2, 1, 0};

static uint8_t mac[6] = {0x10, 0x10, 0x10, 0x02, 0x00, 0x00};
static uint8_t ip[4] = {10, 10, 10, 200};
static uint16_t port = 80;
unsigned long runtime, starttime;

ETHER_28J60 ether;

void setup() {
pinMode(4, OUTPUT); // REQUIRED for eKitsZone.com ENC28J60 shield!!!
digitalWrite(4, HIGH); // Same as above.

// Serial.begin(57600);
ether.setup(mac, ip, port);
rsize = sizeof(relay) / 2;
for (i = 0; i < rsize; i = i + 1) {
pinMode(relay[i], OUTPUT);
}
runtime = 0;
starttime = millis();
}

void loop() {
int c;
char * param;
char * params;

if (params = ether.serviceRequest()) {
if (strstr(params, "?status")) {
for (i = 0; i < rsize; i = i + 1) {
ether.print(digitalRead(relay[i]));
}
} else {
if((strlen(params) > 3) && (!(strstr(params, "favicon.ico")))) {
runtime = 0;
param = strtok(params, "?&");
while (param != NULL) {
if (strstr(param, "p=")) {
i = atoi(param + 2) - 1;
} else if (strstr(param, "c=")) {
c = atoi(param + 2);
if (c == 1) {
for (c = 0; c < rsize; c = c + 1) { digitalWrite(relay[c],
LOW); }
digitalWrite(relay[i], HIGH);
} else {
for (c = 0; c < rsize; c = c + 1) { digitalWrite(relay[c],
LOW); }
}
} else if (strstr(param, "t=")) {
runtime = (unsigned long)(atoi(param + 2)) * 1000;
if (runtime < 15000) { runtime = 15000; }
starttime = millis();
}
param = strtok(NULL, "& ");
}
if (runtime == 0) {
runtime = 60000; // 60 sec. default run time (takes 10 seconds
for valve to open).
starttime = millis();
}
}

ether.print("<tt>Network Relay System\n<br>\n");
for (i = 0; i < rsize; i = i + 1) {
ether.print("<br>Port #");
ether.print(i+1);
ether.print(": <a href='?p=");
ether.print(i+1);
if (digitalRead(relay[i]) == 1) {
ether.print("&c=0'>Off</a> in ");
ether.print((runtime - (millis() - starttime))/1000);
ether.print(" seconds.\n");
}
else {
ether.print("&c=1'>On</a>\n");
}
}
ether.print("<p><a href='/'>Refresh</a>,<a
href='/?status'>Status</a>\n");
}
ether.respond();
}

if ((unsigned long)(millis() - starttime) > runtime) {
for (c = 0; c < rsize; c = c + 1) { digitalWrite(relay[c], LOW); }
}
}




Web Control Relay - Arduino



Using the same hardware and an ethernet sheild I found and modified an ethernet sketch to
control the relays. This sketh controls each rely with a specific URL. I have the IP set to
192.168.1.111. The URL for pin 2 is 192.168.1.111/$1 and 192.168.1.111/$2 to toggle it on
or off.
pin3 is $3 and $4
pin4 is $5 and $6
pin5 is $7 and $8
pin6 is $9 and $0
pin7 is $A and $B
pin8 is $C and $D
pin9 is $E and $F

I didn't write this sketch. I just made a few mods. All credit goes to the original author.

/*
Web Server Demo
thrown together by Randy Sarafan

Allows you to turn on and off an LED by entering different urls.

To turn it on:
http://your-IP-address/$1

To turn it off:
http://your-IP-address/$2

Circuit:
* Ethernet shield attached to pins 10, 11, 12, 13
* Connect an LED to pin D2 and put it in series with a 220 ohm resistor to ground

Based almost entirely upon Web Server by Tom Igoe and David Mellis

Edit history:
created 18 Dec 2009
by David A. Mellis
modified 4 Sep 2010
by Tom Igoe

*/

#include <SPI.h>
#include <Ethernet.h>

boolean incoming = 0;

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = { 0x00, 0xAA, 0xBB, 0xCC, 0xDA, 0x02 };
IPAddress ip(192,168,1,111); //<<< ENTER YOUR IP ADDRESS HERE!!!

// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(80);

void setup()
{
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);

// start the Ethernet connection and the server:
Ethernet.begin(mac, ip);
server.begin();
Serial.begin(9600);
}

void loop()
{
// listen for incoming clients
EthernetClient client = server.available();
if (client) {
// an http request ends with a blank line
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
// if you've gotten to the end of the line (received a newline
// character) and the line is blank, the http request has ended,
// so you can send a reply

//reads URL string from $ to first blank space
if(incoming && c == ' '){
incoming = 0;
}
if(c == '$'){
incoming = 1;
}

//Checks for the URL string $1 or $2
if(incoming == 1){
Serial.println(c);

if(c == '1'){
Serial.println("ON");
digitalWrite(2, HIGH);
}
if(c == '2'){
Serial.println("OFF");
digitalWrite(2, LOW);
}
if(c == '3'){
Serial.println("ON");
digitalWrite(3, HIGH);
}
if(c == '4'){
Serial.println("OFF");
digitalWrite(3, LOW);
}
if(c == '5'){
Serial.println("ON");
digitalWrite(4, HIGH);
}
if(c == '6'){
Serial.println("OFF");
digitalWrite(4, LOW);
}
if(c == '7'){
Serial.println("ON");
digitalWrite(5, HIGH);
}
if(c == '8'){
Serial.println("OFF");
digitalWrite(5, LOW);
}
if(c == '9'){
Serial.println("ON");
digitalWrite(6, HIGH);
}
if(c == '0'){
Serial.println("OFF");
digitalWrite(6, LOW);
}
if(c == 'A'){
Serial.println("ON");
digitalWrite(7, HIGH);
}
if(c == 'B'){
Serial.println("OFF");
digitalWrite(7, LOW);
}
if(c == 'C'){
Serial.println("ON");
digitalWrite(8, HIGH);
}
if(c == 'D'){
Serial.println("OFF");
digitalWrite(8, LOW);
}
if(c == 'E'){
Serial.println("ON");
digitalWrite(9, HIGH);
}
if(c == 'F'){
Serial.println("OFF");
digitalWrite(9, LOW);
}

}

if (c == '\n') {
// you're starting a new line
currentLineIsBlank = true;
}
else if (c != '\r') {
// you've gotten a character on the current line
currentLineIsBlank = false;
}
}
}
// give the web browser time to receive the data
delay(1);
// close the connection:
client.stop();
}
}



Program de test modul 8 relee
int Relay1 = 13;
int Relay2 = 12;
int Relay3 = 11;
int Relay4 = 10;
int Relay5 = 9;
int Relay6 = 8;
int Relay7 = 7;
int Relay8 = 6;
void setup()
{
pinMode(Relay1, OUTPUT); //Set Pin12 as output
pinMode(Relay2, OUTPUT);
pinMode(Relay3, OUTPUT);
pinMode(Relay4, OUTPUT);
pinMode(Relay5, OUTPUT);
pinMode(Relay6, OUTPUT);
pinMode(Relay7, OUTPUT);
pinMode(Relay8, OUTPUT);
}
void loop()
{
digitalWrite(Relay1, HIGH); //Turn off relay
delay(2000);
digitalWrite(Relay1, LOW); //Turn on relay
delay(2000);
digitalWrite(Relay2, HIGH); //Turn off relay
delay(2000);
digitalWrite(Relay2, LOW); //Turn on relay
delay(2000);
digitalWrite(Relay3, HIGH); //Turn off relay
delay(2000);
digitalWrite(Relay3, LOW); //Turn on relay
delay(2000);
digitalWrite(Relay4, HIGH); //Turn off relay
delay(2000);
digitalWrite(Relay4, LOW); //Turn on relay
delay(2000);
digitalWrite(Relay5, HIGH); //Turn off relay
delay(2000);
digitalWrite(Relay5, LOW); //Turn on relay
delay(2000);
digitalWrite(Relay6, HIGH); //Turn off relay
delay(2000);
digitalWrite(Relay6, LOW); //Turn on relay
delay(2000);
digitalWrite(Relay7, HIGH); //Turn off relay
delay(2000);
digitalWrite(Relay7, LOW); //Turn on relay
delay(2000);
digitalWrite(Relay8, HIGH); //Turn off relay
delay(2000);
digitalWrite(Relay8, LOW); //Turn on relay
delay(2000);
}




Control relay module with ethernet shield and some nice html shit

//for use with IDE 1.0


//open serial monitor to see what the arduino receives


//use the \ slash to escape the " in the html


//for use with W5100 based ethernet shields


// this project is hosted at


// http://code.google.com/p/arduino-autohome/




#include <SPI.h>


#include <Ethernet.h>










byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0x78, 0xE0 }; // <------- PUT YOUR MAC
Address Here


byte ip[] = { 192, 168, 1, 102 }; // <------- PUT YOUR IP
Address Here


byte gateway[] = { 192, 168, 1, 254 }; // <------- PUT YOUR ROUTERS
IP Address to which your shield is connected Here


byte subnet[] = { 255, 255, 255, 0 }; // <------- It will be as it
is in most of the cases


EthernetServer server(80); // <------- It's Defaulf
Server Port for Ethernet Shield




String readString;




//////////////////////




void setup()


{




pinMode(6, OUTPUT); // Pin Assignment through which relay will be controlled


pinMode(7, OUTPUT);


pinMode(8, OUTPUT);


pinMode(9, OUTPUT);








//start Ethernet





Ethernet.begin(mac, ip, gateway, subnet);


server.begin();





//enable serial data print





Serial.begin(9600);


Serial.println("server LED test 1.0"); // so that we can know what is getting
loaded


}




void loop()


{








// Create a client connection




EthernetClient client = server.available();


if (client) {


while (client.connected()) {


if (client.available()) {


char c = client.read();







//read char by char HTTP request


if (readString.length() < 100) {




//store characters to string


readString += c;


//Serial.print(c);


}




//if HTTP request has ended


if (c == '\n') {




///////////////


Serial.println(readString); //print to serial monitor for debuging




/* Start OF HTML Section. Here Keep everything as it is unless you
understands its working */





client.println("HTTP/1.1 200 OK"); //send new page


client.println("Content-Type: text/html");


client.println();


//client.println("<meta http-equiv=\"refresh\" content=\"5\">");




client.println("<HTML>");


client.println("<HEAD>");


client.println("<meta name='apple-mobile-web-app-capable' content='yes'
/>");


client.println("<meta name='apple-mobile-web-app-status-bar-style'
content='black-translucent' />");


client.println("<link rel=\"stylesheet\" type=\"text/css\"
href=\"http://arduino-autohome.googlecode.com/svn/trunk/autohome.css\" />");








client.println("</HEAD>");


client.println("<body bgcolor=\"#D0D0D0\">");





client.println("<hr/>");


client.println("<hr/>");


client.println("<h4><center><img border=\"2\"
src=\"https://lh3.googleusercontent.com/-
C6BoJrRUFko/UEUFeCwkvdI/AAAAAAAAAOc/E7gcYvPV6r4/s960/Logo.jpg\"
/></center></h4>");


client.println("<hr/>");


client.println("<hr/>");





client.println("<br />");


client.println("<br />");


client.println("<br />");


client.println("<br />");


client.println("<br />");





// Relay Control Code


client.println("<a href=\"/?relay1on\"\">Turn On Light 1</a>");


client.println("<a href=\"/?relay1off\"\">Turn Off Light 1</a><br />");





client.println("<br />");


client.println("<br />");


client.println("<br />");


client.println("<br />");





client.println("<a href=\"/?relay2on\"\">Turn On Light 2</a>");


client.println("<a href=\"/?relay2off\"\">Turn Off Light 2</a><br />");





client.println("<br />");


client.println("<br />");


client.println("<br />");


client.println("<br />");





client.println("<a href=\"/?relay3on\"\">Turn On Light 3</a>");


client.println("<a href=\"/?relay3off\"\">Turn Off Light 3</a><br />");





client.println("<br />");


client.println("<br />");


client.println("<br />");


client.println("<br />");





client.println("<a href=\"/?relay4on\"\">Turn On Light 4</a>");


client.println("<a href=\"/?relay4off\"\">Turn Off Light 4</a><br />");




client.println("<br />");


client.println("<br />");














// control arduino pin via ethernet Start //








if(readString.indexOf("?relay1on") >0)//checks for on


{


digitalWrite(6, HIGH); // set pin 4 high


Serial.println("Led On");


client.println("<link rel='apple-touch-icon'
href='http://chriscosma.co.cc/on.png' />");


//client.println("Light 1 Is On");


client.println("<br />");


}


else{


if(readString.indexOf("?relay1off") >0)//checks for off


{


digitalWrite(6, LOW); // set pin 4 low


Serial.println("Led Off");


client.println("<link rel='apple-touch-icon'
href='http://chriscosma.co.cc/off.png' />");


//client.println("Light 1 Is Off");


client.println("<br />");


}


}





if(readString.indexOf("?relay2on") >0)//checks for on


{


digitalWrite(7, HIGH); // set pin 4 high


Serial.println("Led On");


client.println("<link rel='apple-touch-icon'
href='http://chriscosma.co.cc/on.png' />");


//client.println("Light 2 Is On");


client.println("<br />");


}


else{


if(readString.indexOf("?relay2off") >0)//checks for off


{


digitalWrite(7, LOW); // set pin 4 low


Serial.println("Led Off");


client.println("<link rel='apple-touch-icon'
href='http://chriscosma.co.cc/off.png' />");


//client.println("Light 2 Is Off");


client.println("<br />");


}


}





if(readString.indexOf("?relay3on") >0)//checks for on


{


digitalWrite(8, HIGH); // set pin 4 high


Serial.println("Led On");


client.println("<link rel='apple-touch-icon'
href='http://chriscosma.co.cc/on.png' />");


// client.println("Light 3 Is On");


client.println("<br />");


}


else{


if(readString.indexOf("?relay3off") >0)//checks for off


{


digitalWrite(8, LOW); // set pin 4 low


Serial.println("Led Off");


client.println("<link rel='apple-touch-icon'
href='http://chriscosma.co.cc/off.png' />");


//client.println("Light 3 Is Off");


client.println("<br />");


}


}








if(readString.indexOf("?relay4on") >0)//checks for on


{


digitalWrite(9, HIGH); // set pin 4 high


Serial.println("Led On");


client.println("<link rel='apple-touch-icon'
href='http://chriscosma.co.cc/on.png' />");


//client.println("Light 4 Is On");


client.println("<br />");


}


else{


if(readString.indexOf("?relay4off") >0)//checks for off


{


digitalWrite(9, LOW); // set pin 4 low


Serial.println("Led Off");


client.println("<link rel='apple-touch-icon'
href='http://chriscosma.co.cc/off.png' />");


//client.println("Light 4 Is Off");


client.println("<br />");


}


}





// control arduino pin via ethernet End //











// Relay Status Display


client.println("<center>");


client.println("<table border=\"5\">");


client.println("<tr>");





if (digitalRead(6))


{


client.print("<td>Light 1 is ON</td>");





}


else


{


client.print("<td>Light 1 is OFF</td>");





}








client.println("<br />");





if (digitalRead(7))


{


client.print("<td>Light 2 is ON</td>");





}


else


{


client.print("<td>Light 2 is OFF</td>");





}





client.println("</tr>");


client.println("<tr>");





if (digitalRead(8))


{


client.print("<td>Light 3 is ON</td>");





}


else


{


client.print("<td>Light 3 is OFF</td>");





}














if (digitalRead(9))


{


client.print("<td>Light 4 is ON</td>");





}


else


{


client.print("<td>Light 4 is OFF</td>");





}





client.println("</tr>");


client.println("</table>");





client.println("</center>");











//clearing string for next read





readString="";




client.println("</body>");


client.println("</HTML>");




delay(1);


//stopping client


client.stop();




}


}


}


}


}




Observatie: se alege orice adresa la shieldul ethernet pt arduino, adica alegem
ce ip vrem noi unde ne cereyour ip;





Cod modul relee

/* Used Arduino Mega pins and Relay ones
- D46 > In1, D47 > In2, D48 > In3, D49 > In4, D50 > In5, D51 > In6, D52 > In7, D53
> In8
- VCC > 5V
- I GND on Relay board > Arduino's GND
- II GND on Relay board > External Power source's GND (If you use external power
source) */

void setup(){
for(int i=46; i<=53; i++){
pinMode(i, OUTPUT);
}
}

void loop(){
for(int i=46; i<=53; i++){
int z = i-45;
digitalWrite(i, LOW);
delay(z*20);
digitalWrite(i, HIGH);
delay(z*20);
}
}



Cod de test modul 8 relee pare sa fuctioneze

int relay1 = 35;
int relay2 = 37;
int relay3 = 39;
int relay4 = 41;
int relay5 = 43;
int relay6 = 45;
int relay7 = 47;
int relay8 = 49;
int i = 1000;

void setup() {
pinMode(relay1, OUTPUT);
pinMode(relay2, OUTPUT);
pinMode(relay3, OUTPUT);
pinMode(relay4, OUTPUT);
pinMode(relay5, OUTPUT);
pinMode(relay6, OUTPUT);
pinMode(relay7, OUTPUT);
pinMode(relay8, OUTPUT);
}
void loop() {
digitalWrite(relay1, HIGH);
digitalWrite(relay2, HIGH);
digitalWrite(relay3, HIGH);
digitalWrite(relay4, HIGH);
digitalWrite(relay5, HIGH);
digitalWrite(relay6, HIGH);
digitalWrite(relay7, HIGH);
digitalWrite(relay8, HIGH);
if (i >= 5){
delay(i);
digitalWrite(relay1, LOW);
delay(i);
digitalWrite(relay1, HIGH);
delay(i);
digitalWrite(relay2, LOW);
delay(i);
digitalWrite(relay2, HIGH);
delay(i);
digitalWrite(relay3, LOW);
delay(i);
digitalWrite(relay3, HIGH);
delay(i);
digitalWrite(relay4, LOW);
delay(i);
digitalWrite(relay4, HIGH);
delay(i);
digitalWrite(relay5, LOW);
delay(i);
digitalWrite(relay5, HIGH);
delay(i);
digitalWrite(relay6, LOW);
delay(i);
digitalWrite(relay6, HIGH);
delay(i);
digitalWrite(relay7, LOW);
delay(i);
digitalWrite(relay7, HIGH);
delay(i);
digitalWrite(relay8, LOW);
delay(i);
digitalWrite(relay8, HIGH);
i = i/2;
}
else{
i = 1000;
}
}








Sketch pentru PIR

// http://blog.roman-mueller.ch/index.php/2013/01/26/hc-sr501-passive-
infrared-sensor-with-arduino/
// http://robotic-controls.com/learn/sensors/pir-sensor-hc-sr501
// http://nicuflorica.blogspot.ro/2014/02/senzorul-de-prezenta-hc-sr501-si-
arduino.html

#define pir A0
#define led 13

void setup() {
Serial.begin(9600);
pinMode(pir, INPUT);
pinMode(led, OUTPUT);
}

void loop() {
int val = analogRead(pir);
float val1 = val*5.00/1023.00;
digitalWrite(led, LOW);
if (val <650) {
Serial.print(val);
Serial.print("/1023 = ");
Serial.print(val1);
Serial.println("V - No motion"); //if the value read is low, there was
no motion

}
else {
Serial.print(val);
Serial.print("/1023 = ");
Serial.print(val1);
Serial.println("V - Motion!"); //if the value read was high, there was
motion
digitalWrite(led, HIGH);
}
delay(500);
}



Pentru senzori de temperatura
#include <OneWire.h>
#include <DallasTemperature.h>

// Data wire is plugged into port 10 on the Arduino
#define ONE_WIRE_BUS 10
#define TEMPERATURE_PRECISION 12

// Setup a oneWire instance to communicate with any OneWire devices (not ju
st Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);

// arrays to hold device addresses
DeviceAddress rightThermometer, midleThermometer, leftThermometer;


void setup(void)
{
// start serial port
Serial.begin(9600);
Serial.println("Dallas Temperature IC Control Library use by niq_ro");
Serial.println("---------------------------------------------------");

// Start up the library
sensors.begin();
DeviceAddress rightThermometer = { 0x28, 0xAC, 0x7A, 0xD4, 0x4, 0x0, 0x0,
0x7E };
DeviceAddress midleThermometer = { 0x28, 0xF5, 0xFB, 0x58, 0x5, 0x0, 0x0,
0xA0 };
DeviceAddress leftThermometer = { 0x28, 0xCB, 0xF0, 0x58, 0x5, 0x0, 0x0,
0x2E };


// method 1: by index
if (!sensors.getAddress(rightThermometer, 0)) Serial.println("Unable to
find address for Device 0");
if (!sensors.getAddress(midleThermometer, 1)) Serial.println("Unable to
find address for Device 1");
if (!sensors.getAddress(leftThermometer, 2)) Serial.println("Unable to
find address for Device 2");


// show the addresses we found on the bus
Serial.print("Device 0 Address: ");
printAddress(rightThermometer);
Serial.println();

Serial.print("Device 1 Address: ");
printAddress(midleThermometer);
Serial.println();

Serial.print("Device 2 Address: ");
printAddress(leftThermometer);
Serial.println();


// set the resolution to 9..12 bit
sensors.setResolution(rightThermometer, TEMPERATURE_PRECISION);
sensors.setResolution(midleThermometer, TEMPERATURE_PRECISION);
sensors.setResolution(leftThermometer, TEMPERATURE_PRECISION);

/*
Serial.print("Device 0 Resolution: ");
Serial.print(sensors.getResolution(rightThermometer), DEC);
Serial.println();

Serial.print("Device 1 Resolution: ");
Serial.print(sensors.getResolution(midleThermometer), DEC);
Serial.println();

Serial.print("Device 2 Resolution: ");
Serial.print(sensors.getResolution(leftThermometer), DEC);
Serial.println();
*/
}


// function to print a device address
void printAddress(DeviceAddress device)
{
for (uint8_t i = 0; i < 8; i++)
{
// zero pad the address if necessary
if (device[i] < 16) Serial.print("0");
Serial.print(device[i], HEX);
}
Serial.println(" - ");
}

// function to print the temperature for a device
void printTemperature(DeviceAddress device)
{
float tempC = sensors.getTempC(device);
Serial.print("Temp C: ");
if (tempC == -127.00) {
Serial.print("Error");
} else {
Serial.print(tempC);
Serial.print(" Temp F: ");
Serial.print(DallasTemperature::toFahrenheit(tempC));
}
}
// function to print a device's resolution
void printResolution(DeviceAddress device)
{
Serial.print("Resolution: ");
Serial.print(sensors.getResolution(device));
Serial.println();
}

// main function to print information about a device
void printData(DeviceAddress device)
{
Serial.print("Address: ");
printAddress(device);
Serial.print(" ");
printTemperature(device);
Serial.println();
}

void loop(void)
{
DeviceAddress rightThermometer = { 0x28, 0xAC, 0x7A, 0xD4, 0x4, 0x0, 0x0,
0x7E };
DeviceAddress midleThermometer = { 0x28, 0xF5, 0xFB, 0x58, 0x5, 0x0, 0x0,
0xA0 };
DeviceAddress leftThermometer = { 0x28, 0xCB, 0xF0, 0x58, 0x5, 0x0, 0x0,
0x2E };

// call sensors.requestTemperatures() to issue a global temperature
// request to all devices on the bus
Serial.println("---------------------------------------");
Serial.println(" ");
Serial.print("Requesting temperatures...");
sensors.requestTemperatures();
Serial.println("DONE");
Serial.println("---------------------------------------");
Serial.println(" ");

// print the device information
Serial.print("Device DS18B20 (right) ");
printData(rightThermometer);
Serial.println("---------------------------------------");
Serial.print("Device MAX31820 (center) ");
printData(midleThermometer);
Serial.println("---------------------------------------");
Serial.print("Device MAX31820 (left) ");
printData(leftThermometer);
Serial.println("---------------------------------------");
delay(3000);
}


Variator de tensiune pentru bec cu Arduino (VII)

/*
AC Light Control
Updated by Robert Twomey <rtwomey@u.washington.edu>
Thanks to http://www.andrewkilpatrick.org/blog/?page_id=445
and http://www.hoelscher-hi.de/hendrik/english/dimmer.htm
adapted sketch by niq_ro from
http://www.tehnic.go.ro
http://www.niqro.3x.ro
http://nicuflorica.blogspot.com

IR Remote Kit Test
Uses YourDuino.com IR Infrared Remote Control Kit 2
http://arduino-direct.com/sunshop/index.php?l=product_detail&p=153
based on code by Ken Shirriff - http://arcfn.com
Get Library at: https://github.com/shirriff/Arduino-IRremote

Bluetooth:
// adapted sketch from http://english.cxem.net/arduino/arduino4.php
*/

#include <LiquidCrystal.h>
// use LiquidCrystal.h library for alphanumerical display 1602
LiquidCrystal lcd(13,12,11,10,9,8);
/* -------------------
| LCD | Arduino |
-------------------
LCD RS pin to digital pin 13 | RS | D13 |
LCD Enable pin to digital pin 12 | E | D12 |
LCD D4 pin to digital pin 11 | D4 | D11 |
LCD D5 pin to digital pin 10 | D5 | D10 |
LCD D6 pin to digital pin 9 | D6 | D9 |
LCD D7 pin to digital pin 8 | D7 | D8 |
LCD R/W pin to ground | R/W | GND |
-------------------
*/

#include "IRremote.h"
//-----( Declare Constants )-----
int receiver = 7; // pin 1 of IR receiver to Arduino digital pin 7
//-----( Declare objects )-----
IRrecv irrecv(receiver); // create instance of 'irrecv'
decode_results results; // create instance of 'decode_results'
//-----( Declare Variables )-----


#include <TimerOne.h> // Avaiable from
http://www.arduino.cc/playground/Code/Timer1

volatile int i=0; // Variable to use as a counter
volatile boolean zero_cross=0; // Boolean to store a "switch" to tell us if we
have crossed zero
int AC_pin = 3; // Output to Opto Triac
int buton1 = 4; // first button at pin 4
int buton2 = 5; // second button at pin 5
int dim2 = 0; // led control
int dim = 128; // Dimming level (0-128) 0 = on, 128 = 0ff
int pas = 8; // step for count;
// version: 4m7 (15.04.2013 - Craiova, Romania) -
16 steps, 4 button & LED blue to red (off to MAX)
// version: 7m6.1 (23.01.2014 - Craiova, Romania) - 16 steps, 2 button & LCD1602

int freqStep = 75; // This is the delay-per-brightness step in microseconds.

char incomingByte; // incoming data from serial 9bluetooth)

void setup() { // Begin setup

Serial.begin(9600); // initialization

irrecv.enableIRIn(); // Start the IR receiver (classic remote)

pinMode(buton1, INPUT); // set buton1 pin as input
pinMode(buton2, INPUT); // set buton1 pin as input
pinMode(AC_pin, OUTPUT); // Set the Triac pin as output
attachInterrupt(0, zero_cross_detect, RISING); // Attach an Interupt to Pin 2
(interupt 0) for Zero Cross Detection
Timer1.initialize(freqStep); // Initialize TimerOne library
for the freq we need
Timer1.attachInterrupt(dim_check, freqStep);
// Use the TimerOne Library to attach an interrupt

lcd.begin(16, 2); // set up the LCD's number of columns and rows:
lcd.clear(); // clear the screen
lcd.setCursor(2, 0); // put cursor at colon 0 and row 0
lcd.print("16 steps AC"); // print a text
lcd.setCursor(0, 1); // put cursor at colon 0 and row 1
lcd.print("dimmer for bulb"); // print a text
delay (3000);
lcd.clear(); // clear the screen
lcd.setCursor(1, 0); // put cursor at colon 0 and row 0
lcd.print("this sketch is"); // print a text
lcd.setCursor(1, 1); // put cursor at colon 0 and row 1
lcd.print("made by niq_ro"); // print a text
delay (3000);
lcd.clear(); // clear the screen
}

void zero_cross_detect() {
zero_cross = true; // set the boolean to true to tell our dimming
function that a zero cross has occured
i=0;
digitalWrite(AC_pin, LOW);
}

// Turn on the TRIAC at the appropriate time
void dim_check() {
if(zero_cross == true) {
if(i>=dim) {
digitalWrite(AC_pin, HIGH); // turn on light
i=0; // reset time step counter
zero_cross=false; // reset zero cross detection
}
else {
i++; // increment time step counter
}
}
}


//-----( Declare User-written Functions )-----
void translateIR() // takes action based on IR code received

// describing Car MP3 IR codes
{
switch(results.value)
{
case 0xFFA25D:
Serial.println(" CH- ");
break;

case 0xFF629D:
Serial.println(" CH ");
break;

case 0xFFE21D:
Serial.println(" CH+ ");
break;

case 0xFF22DD:
{
Serial.println(" PREV ");
dim=128;
}
break;

case 0xFF02FD:
{
Serial.println(" NEXT ");
dim=0;
}
break;

case 0xFFC23D:
Serial.println(" PLAY/PAUSE ");
break;

case 0xFFE01F:
{
Serial.println(" VOL- ");
if (dim<127)
{
dim = dim + pas;
if (dim>127)
{
dim=128; // in vechiul sketch era 127
}
}
}
break;

case 0xFFA857:
{
Serial.println(" VOL+ ");
{
if (dim>5)
{
dim = dim - pas;
if (dim<0)
{
dim=0; // in vechiul sketch era 1
}
}
}
}
break;

case 0xFF906F:
Serial.println(" EQ ");
break;

case 0xFF6897:
{
Serial.println(" 0 ");
// analogWrite(ledr, 0);
// analogWrite(leda, 0);
// analogWrite(ledv, 0);
}
break;

case 0xFF9867:
Serial.println(" 100+ ");
break;

case 0xFFB04F:
Serial.println(" 200+ ");
break;

case 0xFF30CF:
{
Serial.println(" 1 ");
// analogWrite(leda, 255);
}
break;

case 0xFF18E7:
{
Serial.println(" 2 ");
// analogWrite(ledv, 255);
}
break;

case 0xFF7A85:
{
Serial.println(" 3 ");
// analogWrite(ledr, 255);
}
break;

case 0xFF10EF:
{
Serial.println(" 4 ");
// analogWrite(leda, 122);
}
break;

case 0xFF38C7:
{
Serial.println(" 5 ");
// analogWrite(ledv, 122);
}
break;

case 0xFF5AA5:
{
Serial.println(" 6 ");
// analogWrite(ledr, 122);
}
break;

case 0xFF42BD:
{
Serial.println(" 7 ");
// analogWrite(leda, 0);
}
break;

case 0xFF4AB5:
{
Serial.println(" 8 ");
// analogWrite(ledv, 0);
}
break;

case 0xFF52AD:
{
Serial.println(" 9 ");
// analogWrite(ledr, 0);
}
break;

default:
Serial.println(" other button ");

}

}

void blustuf()
{
incomingByte = Serial.read(); // read byte
if(incomingByte == '0') {
}
if(incomingByte == '1') {
}
if(incomingByte == '2') {
}
if(incomingByte == '3') {
}
if(incomingByte == '4') {
}
if(incomingByte == '5') {
}
if(incomingByte == '6') {
}
if(incomingByte == '7') {
}
if(incomingByte == 'a') { //step up
if (dim<127)
{
dim = dim + pas;
if (dim>127)
{
dim=128;
}
}
}

if(incomingByte == 's') { //step down
if (dim>5)
{
dim = dim - pas;
if (dim<0)
{
dim=0;
}
}
}

if(incomingByte == 'w') { // power is 100%
dim=0;
}
if(incomingByte == 'z') { // power is 0% (off)
dim=128;
}
}

void stelute()
{
if (dim2<1) lcd.print("----------------");
else
if (dim2<9) lcd.print("*---------------");
else
if (dim2<17) lcd.print("-*--------------");
else
if (dim2<25) lcd.print("--*-------------");
else
if (dim2<33) lcd.print("---*------------");
else
if (dim2<41) lcd.print("----*-----------");
else
if (dim2<49) lcd.print("-----*----------");
else
if (dim2<57) lcd.print("------*---------");
else
if (dim2<65) lcd.print("-------*--------");
else
if (dim2<73) lcd.print("--------*-------");
else
if (dim2<81) lcd.print("---------*------");
else
if (dim2<89) lcd.print("----------*-----");
else
if (dim2<97) lcd.print("-----------*----");
else
if (dim2<105) lcd.print("------------*---");
else
if (dim2<113) lcd.print("-------------*--");
else
if (dim2<121) lcd.print("--------------*-");
else
if (dim2>127) lcd.print("---------------*");
}


void loop() {
digitalWrite(buton1, HIGH);
digitalWrite(buton2, HIGH);

if (Serial.available() > 0) blustuf(); // if bluetooth is present

if (digitalRead(buton1) == LOW)
{
if (dim<127)
{
dim = dim + pas;
if (dim>127)
{
dim=128; // in vechiul sketch era 127
}
}
}
if (digitalRead(buton2) == LOW)
{
if (dim>5)
{
dim = dim - pas;
if (dim<0)
{
dim=0; // in vechiul sketch era 1
}
}
}
while (digitalRead(buton1) == LOW) { }
delay(10); // waiting little bit...
while (digitalRead(buton2) == LOW) { }
delay(10); // waiting little bit...


// remote
if (irrecv.decode(&results)) // have we received an IR signal?
{
translateIR();
irrecv.resume(); // receive the next value
}

delay (100);
lcd.setCursor(2, 0); // put cursor at colon 0 and row 0
lcd.print("power is "); // print a text
lcd.print(100*(128-dim)/128);
lcd.print("% "); // print a text

lcd.setCursor(0, 1); // put cursor at colon 0 and row 1

dim2=128-dim; // variable use for graphics
stelute();
}

Vous aimerez peut-être aussi