Arduino Sensors: Difference between revisions
m (added pre) |
|||
(18 intermediate revisions by the same user not shown) | |||
Line 11: | Line 11: | ||
Source: [http://tronixstuff.com/2014/12/01/tutorial-using-ds1307-and-ds3231-real-time-clock-modules-with-arduino/ tronixstuff.com] |
Source: [http://tronixstuff.com/2014/12/01/tutorial-using-ds1307-and-ds3231-real-time-clock-modules-with-arduino/ tronixstuff.com] |
||
<pre style="width: 75%; height: 10pc; overflow-y: scroll;"> |
<pre style="width: 75%; height: 10pc; overflow-y: scroll;">#include <Arduino.h> |
||
#include <TM1637Display.h> |
|||
#define CLK 2 |
|||
#define DIO 3 |
|||
#define TEST_DELAY 2000 |
|||
const uint8_t SEG_DONE[] = { |
|||
SEG_B | SEG_C | SEG_D | SEG_E | SEG_G, // d |
|||
SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F, // O |
|||
SEG_C | SEG_E | SEG_G, // n |
|||
SEG_A | SEG_D | SEG_E | SEG_F | SEG_G // E |
|||
}; |
|||
TM1637Display display(CLK, DIO); |
|||
void setup() |
|||
{ |
|||
} |
|||
void loop() |
|||
{ |
|||
int k; |
|||
uint8_t data[] = { 0xff, 0xff, 0xff, 0xff }; |
|||
display.setBrightness(0x0f); |
|||
// All segments on |
|||
display.setSegments(data); |
|||
delay(TEST_DELAY); |
|||
// Selectively set different digits |
|||
data[0] = 0b01001001; |
|||
data[1] = display.encodeDigit(1); |
|||
data[2] = display.encodeDigit(2); |
|||
data[3] = display.encodeDigit(3); |
|||
for(k = 3; k >= 0; k--) { |
|||
display.setSegments(data, 1, k); |
|||
delay(TEST_DELAY); |
|||
} |
|||
display.setSegments(data+2, 2, 2); |
|||
delay(TEST_DELAY); |
|||
display.setSegments(data+2, 2, 1); |
|||
delay(TEST_DELAY); |
|||
display.setSegments(data+1, 3, 1); |
|||
delay(TEST_DELAY); |
|||
// Show decimal numbers with/without leading zeros |
|||
bool lz = false; |
|||
for (uint8_t z = 0; z < 2; z++) { |
|||
for(k = 0; k < 10000; k += k*4 + 7) { |
|||
display.showNumberDec(k, lz); |
|||
delay(TEST_DELAY); |
|||
} |
|||
lz = true; |
|||
} |
|||
// Show decimal number whose length is smaller than 4 |
|||
for(k = 0; k < 4; k++) |
|||
data[k] = 0; |
|||
display.setSegments(data); |
|||
display.showNumberDec(153, false, 3, 1); |
|||
delay(TEST_DELAY); |
|||
display.showNumberDec(22, false, 2, 2); |
|||
delay(TEST_DELAY); |
|||
display.showNumberDec(0, true, 1, 3); |
|||
delay(TEST_DELAY); |
|||
display.showNumberDec(0, true, 1, 2); |
|||
delay(TEST_DELAY); |
|||
display.showNumberDec(0, true, 1, 1); |
|||
delay(TEST_DELAY); |
|||
display.showNumberDec(0, true, 1, 0); |
|||
delay(TEST_DELAY); |
|||
// Brightness Test |
|||
for(k = 0; k < 4; k++) |
|||
data[k] = 0xff; |
|||
for(k = 0; k < 16; k++) { |
|||
display.setBrightness(k); |
|||
display.setSegments(data); |
|||
delay(TEST_DELAY); |
|||
} |
|||
// Done! |
|||
display.setSegments(SEG_DONE); |
|||
while(1); |
|||
} |
|||
</pre> |
</pre> |
||
<br /> |
<br /> |
||
Line 20: | Line 110: | ||
;Setting Time for first usage |
;Setting Time for first usage |
||
*You can uncomment the below 3 lines from the below give sketch code to set time for first time. |
|||
<pre style="width: 75%; height: 10pc; overflow-y: scroll;"> |
|||
*Set a near future time & either start uploading the code 2-3 seconds before the exact time(which was set). |
|||
*Otherwise upload time code before the time & press the reset button on Arduino at the exact time. |
|||
*After time is synced, comment these lines & reupload the code again o Arduino. |
|||
*Otherwise same time will be set on every powerup or reset of arduino |
|||
//rtc.setDOW(WEDNESDAY); // Set Day-of-Week to SUNDAY |
|||
</pre> |
|||
//rtc.setTime(12, 0, 0); // Set the time to 12:00:00 (24hr format) |
|||
//rtc.setDate(1, 1, 2014); // Set the date to January 1st, 2014 |
|||
<br /> |
<br /> |
||
;DS3231 RTC Clock Using Non-Rechargeable Batteries |
;DS3231 RTC Clock Using Non-Rechargeable Batteries |
||
Source: [http://www.raspberrypi-spy.co.uk/2015/05/adding-a-ds3231-real-time-clock-to-the-raspberry-pi/ raspberrypi-spy.co.uk], [http://woodsgood.ca/projects/2014/10/21/the-right-rtc-battery/ woodsgood.ca] |
Source: [http://www.raspberrypi-spy.co.uk/2015/05/adding-a-ds3231-real-time-clock-to-the-raspberry-pi/ raspberrypi-spy.co.uk], [http://woodsgood.ca/projects/2014/10/21/the-right-rtc-battery/ woodsgood.ca] |
||
<br /> |
|||
<br /> |
|||
;DS3231 RTC Clock with Display |
;DS3231 RTC Clock with TM1637 Display |
||
Source: [http://www.instructables.com/id/Real-time-clock-using-DS3231-EASY/step3/The-code/ instructables.com] |
Source: [http://www.instructables.com/id/Real-time-clock-using-DS3231-EASY/step3/The-code/ instructables.com] |
||
<pre style="width: 75%; height: 10pc; overflow-y: scroll;">#include <TM1637Display.h> |
|||
#include <TM1637.h> |
|||
// Arduino Uno/2009: |
|||
// ---------------------- |
|||
// DS3231: SDA pin -> Arduino Analog 4 or the dedicated SDA pin |
|||
// SCL pin -> Arduino Analog 5 or the dedicated SCL pin |
|||
#include <Wire.h> |
|||
#include <DS3231.h> |
|||
#include <config.h> |
|||
#define DISPLAY_CLK_PIN 2 |
|||
<pre style="width: 75%; height: 10pc; overflow-y: scroll;"> |
|||
#define DISPLAY_DIO_PIN 3 |
|||
int led = 3; |
|||
TM1637 display(DISPLAY_CLK_PIN, DISPLAY_DIO_PIN); |
|||
DS3231 rtc(SDA, SCL); |
|||
Time t; |
|||
void setup() |
|||
{ |
|||
Serial.begin(115200); |
|||
display.set(); |
|||
display.init(); |
|||
pinMode(led, OUTPUT); |
|||
rtc.begin(); |
|||
// The following lines can be uncommented to set the date and time |
|||
//rtc.setDOW(WEDNESDAY); // Set Day-of-Week to SUNDAY |
|||
//rtc.setTime(12, 0, 0); // Set the time to 12:00:00 (24hr format) |
|||
//rtc.setDate(1, 1, 2014); // Set the date to January 1st, 2014 |
|||
} |
|||
void loop() |
|||
{ |
|||
int8_t timeDisp[4]; |
|||
t = rtc.getTime(); |
|||
timeDisp[0] = t.hour / 10; |
|||
timeDisp[1] = t.hour % 10; |
|||
timeDisp[2] = t.min / 10; |
|||
timeDisp[3] = t.min % 10; |
|||
display.point(t.sec % 2 ? POINT_ON : POINT_OFF); //Colon Blibk |
|||
display.display(timeDisp); |
|||
delay (1000); |
|||
} |
|||
</pre> |
</pre> |
||
<br /> |
<br /> |
||
Line 45: | Line 184: | ||
Source: [https://codebender.cc/sketch:212841#Distance%20Sensor%20TM1637.ino codebender.cc] |
Source: [https://codebender.cc/sketch:212841#Distance%20Sensor%20TM1637.ino codebender.cc] |
||
<pre style="width: 75%; height: 10pc; overflow-y: scroll;"> |
<pre style="width: 75%; height: 10pc; overflow-y: scroll;">#include <Arduino.h> |
||
#include <TM1637Display.h> |
|||
#include <NewPing.h> |
|||
const byte TRIGGER_PIN = 11; |
|||
const byte ECHO_PIN = 12; |
|||
const int MAX_DISTANCE = 500; |
|||
const byte CLK = 3; |
|||
const byte DIO = 4; |
|||
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); |
|||
TM1637Display display(CLK, DIO); |
|||
void setup() |
|||
{ |
|||
Serial.begin(115200); |
|||
display.setBrightness(0x0f); |
|||
} |
|||
void loop() |
|||
{ |
|||
delay(500); |
|||
int x = sonar.ping_cm(); |
|||
display.showNumberDec(x,false,3,1); |
|||
Serial.print(x); |
|||
Serial.println(" cm"); |
|||
} |
|||
</pre> |
</pre> |
||
<br /> |
<br /> |
||
Line 55: | Line 220: | ||
= MQ-2 Gas Sensor = |
= MQ-2 Gas Sensor = |
||
*If using the sensor for first time, leave it powered on for about 24-48 hours(Burn-in Time). |
|||
*Just calibrate it to get about 100-150 from analogRead in a good air condition. |
|||
Don't skip this step, then comes the calibration process. |
|||
*Normal air returns ~100-150 |
|||
Just calibrate it to get about 100-150 from analogRead in a good air condition. |
|||
Normal air returns ~100-150 |
|||
<br /> |
<br /> |
||
<pre style="width: 75%; height: 10pc; overflow-y: scroll;"> |
<pre style="width: 75%; height: 10pc; overflow-y: scroll;">const int sensorPin= 0; |
||
const int buzzerPin= 11; |
|||
int smoke_level; |
|||
int powerLED = 13; |
|||
int greenLED = 9; |
|||
int redLED = 7; |
|||
int threshold = 400; // Your threshold value |
|||
int i = 0; |
|||
void setup() { |
|||
pinMode(sensorPin, INPUT); //the smoke sensor will be an input to the arduino |
|||
pinMode(buzzerPin, OUTPUT); //the buzzer serves an output in the circuit |
|||
pinMode(powerLED, OUTPUT); |
|||
Serial.begin(9600); |
|||
digitalWrite(buzzerPin, LOW); //keep buzzer silent on startup |
|||
} |
|||
void pulsePowerLED() { |
|||
digitalWrite(powerLED, HIGH); |
|||
delay(100); |
|||
digitalWrite(powerLED, LOW); |
|||
delay(100); |
|||
} |
|||
void alarm(){ |
|||
for (int i=0; i<20; i++) |
|||
{ |
|||
digitalWrite(powerLED, HIGH); |
|||
digitalWrite(buzzerPin, HIGH); |
|||
delay(500); |
|||
digitalWrite(powerLED, LOW); |
|||
digitalWrite(buzzerPin, LOW); |
|||
delay(100); |
|||
} |
|||
} |
|||
void loop() { |
|||
if (millis() / 1000 / 20 < 1) //we need to give the device some time to stabilize |
|||
{ |
|||
Serial.println("Calibrating for 20 seconds... "); |
|||
while(millis() / 1000 / 20 < 1) { |
|||
pulsePowerLED(); //pulse our power / blue LED so the user knows something is happening |
|||
} |
|||
Serial.println("Calibrated."); |
|||
} |
|||
smoke_level= analogRead(sensorPin); //arduino reads the value from the smoke sensor |
|||
Serial.println(smoke_level); |
|||
if(smoke_level > threshold) |
|||
alarm(); |
|||
else |
|||
digitalWrite(buzzerPin, LOW); |
|||
digitalWrite(powerLED, HIGH); |
|||
delay(100); |
|||
digitalWrite(powerLED, LOW); |
|||
delay(2000); // Wait for 2 seconds |
|||
} |
|||
</pre> |
</pre> |
||
Line 69: | Line 290: | ||
Source: [http://www.tweaking4all.com/hardware/arduino/arduino-ds18b20-temperature-sensor/ tweaking4all.com] |
Source: [http://www.tweaking4all.com/hardware/arduino/arduino-ds18b20-temperature-sensor/ tweaking4all.com] |
||
<pre style="width: 75%; height: 10pc; overflow-y: scroll;"> |
<pre style="width: 75%; height: 10pc; overflow-y: scroll;">#include <OneWire.h> |
||
#include <DallasTemperature.h> |
|||
#include <TM1637Display.h> |
|||
#define ONE_WIRE_BUS 7 |
|||
OneWire oneWire(ONE_WIRE_BUS); // Setup to communicate with any OneWire device |
|||
DallasTemperature sensors(&oneWire); |
|||
#define CLK 3 |
|||
#define DIO 2 |
|||
TM1637Display display(CLK, DIO); |
|||
void setup(void) |
|||
{ |
|||
Serial.begin(9600); |
|||
Serial.println("Dallas Temperature IC Control Library"); |
|||
sensors.begin(); |
|||
sensors.setResolution(12); |
|||
display.setBrightness(0x0c); |
|||
} |
|||
void loop(void) |
|||
{ |
|||
sensors.requestTemperatures(); // Send the command to get temperatures |
|||
delay(1000); |
|||
float temp = sensors.getTempCByIndex(0); |
|||
int temp2 = temp * 100; |
|||
display.showNumberDec(temp2); |
|||
Serial.print("Temperature is: "); |
|||
Serial.print(sensors.getTempCByIndex(0)); |
|||
Serial.print(" C, "); |
|||
} |
|||
</pre> |
</pre> |
||
<br /> |
<br /> |
||
Line 92: | Line 345: | ||
Simple Text: |
Simple Text: |
||
<pre style="width: 75%; height: 10pc; overflow-y: scroll;"> |
<pre style="width: 75%; height: 10pc; overflow-y: scroll;">#include <LiquidCrystal.h> |
||
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); |
|||
int lastUpdate = 0; |
|||
int currentIndex = 0; |
|||
char* lyrics[] = { |
|||
"Drink all the...", |
|||
" BOOZE! ", |
|||
"Hack all the... ", |
|||
" THINGS! " |
|||
}; |
|||
void setup() { |
|||
lcd.begin(16, 2); // LCD no of lines |
|||
} |
|||
void loop() { |
|||
int time = millis(); |
|||
if ((time - lastUpdate) >= 800) // print next line after 800ms |
|||
{ |
|||
lcd.setCursor(0, 0); |
|||
if (currentIndex == 0 || currentIndex == 2) |
|||
{ |
|||
lcd.clear(); |
|||
lcd.setCursor(0, 0); |
|||
lcd.print(lyrics[currentIndex]); |
|||
} |
|||
else |
|||
{ |
|||
lcd.setCursor(0, 1); |
|||
lcd.print(lyrics[currentIndex]); |
|||
} |
|||
if (currentIndex == 3) // reset of increment index |
|||
{ |
|||
currentIndex = 0; |
|||
} |
|||
else |
|||
{ |
|||
currentIndex += 1; |
|||
} |
|||
lastUpdate = time; |
|||
} |
|||
} |
|||
</pre> |
</pre> |
||
<br /> |
<br /> |
||
Line 122: | Line 417: | ||
Source: [http://www.instructables.com/id/Arduino-Basics-PIR-Sensor/?ALLSTEPS instructables.com] |
Source: [http://www.instructables.com/id/Arduino-Basics-PIR-Sensor/?ALLSTEPS instructables.com] |
||
<pre style="width: 75%; height: 10pc; overflow-y: scroll;"> |
<pre style="width: 75%; height: 10pc; overflow-y: scroll;">int calibrationTime = 30; //time given to sensor to calibrate |
||
long unsigned int lowIn; |
|||
long unsigned int pause = 5000; |
|||
boolean lockLow = true; |
|||
boolean takeLowTime; |
|||
int pirPin = 7; //Digital pin connected to the PIR sensor's output |
|||
int ledPin = 8; |
|||
void setup(){ |
|||
Serial.begin(9600); |
|||
pinMode(pirPin, INPUT); |
|||
pinMode(ledPin, OUTPUT); |
|||
digitalWrite(pirPin, LOW); |
|||
Serial.print("calibrating sensor "); |
|||
for(int i = 0; i < calibrationTime; i++){ |
|||
Serial.print("."); |
|||
delay(1000); |
|||
} |
|||
Serial.println(" done"); |
|||
Serial.println("SENSOR ACTIVE"); |
|||
delay(50); |
|||
} |
|||
void loop(){ |
|||
if(digitalRead(pirPin) == HIGH){ |
|||
digitalWrite(ledPin, HIGH); |
|||
if(lockLow){ |
|||
lockLow = false; |
|||
Serial.println("---"); |
|||
Serial.print("motion detected at "); |
|||
Serial.print(millis()/1000); |
|||
Serial.println(" sec"); |
|||
delay(50); |
|||
} |
|||
takeLowTime = true; |
|||
} |
|||
if(digitalRead(pirPin) == LOW){ |
|||
digitalWrite(ledPin, LOW); |
|||
if(takeLowTime){ |
|||
lowIn = millis(); |
|||
takeLowTime = false; |
|||
} |
|||
if(!lockLow && millis() - lowIn > pause){ |
|||
lockLow = true; |
|||
Serial.print("motion ended at "); |
|||
Serial.print((millis() - pause)/1000); |
|||
Serial.println(" sec"); |
|||
delay(50); |
|||
} |
|||
} |
|||
} |
|||
</pre> |
</pre> |
||
<br /> |
<br /> |
||
Line 130: | Line 480: | ||
Source: [http://www.electroschematics.com/9328/arduino-security-alarm-reed-switch/ electroschematics.com] |
Source: [http://www.electroschematics.com/9328/arduino-security-alarm-reed-switch/ electroschematics.com] |
||
<pre style="width: 75%; height: 10pc; overflow-y: scroll;"> |
<pre style="width: 75%; height: 10pc; overflow-y: scroll;">int ledOpen=8; |
||
int ledClose=10; |
|||
int switchReed=6; |
|||
void setup(){ |
|||
pinMode(ledOpen, OUTPUT); |
|||
pinMode(ledClose, OUTPUT); |
|||
pinMode(switchReed, INPUT); |
|||
Serial.begin(9600); |
|||
} |
|||
void loop(){ |
|||
if (digitalRead(switchReed)==HIGH){ |
|||
digitalWrite(ledOpen, LOW); |
|||
digitalWrite(ledClose, HIGH); |
|||
Serial.println("Your Door is Closed"); |
|||
} |
|||
else { |
|||
digitalWrite(ledOpen, HIGH); |
|||
digitalWrite(ledClose, LOW); |
|||
Serial.println("Your Door is Open"); |
|||
} |
|||
delay(1000); |
|||
} |
|||
</pre> |
</pre> |
||
<br /> |
<br /> |
||
Line 137: | Line 510: | ||
= LDR = |
= LDR = |
||
Source: [https://diyhacking.com/arduino-ldr-sensor/ diyhacking.com] |
Source: [https://diyhacking.com/arduino-ldr-sensor/ diyhacking.com] |
||
[[File:LDR bb.png|thumb|right|Connections]] |
|||
This project will allow you to turn On or Off a LED using LDR.<br /> |
|||
<pre style="width: 75%; height: 10pc; overflow-y: scroll;"> |
|||
You can adjust amount of light by adjusting the value of 'sensorValue'. |
|||
<pre style="width: 75%; height: 10pc; overflow-y: scroll;">#include <SoftwareSerial.h> |
|||
int sensorPin = A0; // select the input pin for the LDR |
|||
int sensorValue; // variable to store the value coming from the sensor |
|||
int led = 3; |
|||
void setup() |
|||
{ |
|||
pinMode(led, OUTPUT); |
|||
Serial.begin(9600); |
|||
} |
|||
void loop() |
|||
{ |
|||
sensorValue = analogRead(sensorPin); |
|||
Serial.println(sensorValue); |
|||
if(sensorValue < 300) |
|||
{ |
|||
digitalWrite(led,HIGH); |
|||
delay(1000); |
|||
} |
|||
else |
|||
digitalWrite(led,LOW); |
|||
delay(1000); |
|||
} |
|||
</pre> |
</pre> |
||
<br /> |
<br /> |
||
Line 146: | Line 546: | ||
Source: [http://www.instructables.com/id/Arduino-AND-Bluetooth-HC-05-Connecting-easily/?ALLSTEPS instructables.com] |
Source: [http://www.instructables.com/id/Arduino-AND-Bluetooth-HC-05-Connecting-easily/?ALLSTEPS instructables.com] |
||
<syntaxhighlight lang="C"> |
|||
<pre style="width: 75%; height: 10pc; overflow-y: scroll;"> |
|||
#include <SoftwareSerial.h> |
|||
SoftwareSerial SoftSerial(10, 11); // RX, TX |
|||
</pre> |
|||
int ledpin=13; |
|||
int BluetoothData; |
|||
void setup() |
|||
{ |
|||
SoftSerial.begin(9600); |
|||
SoftSerial.println("Bluetooth On please press 1 or 0 blink LED .."); |
|||
pinMode(ledpin,OUTPUT); |
|||
} |
|||
void loop() |
|||
{ |
|||
if (SoftSerial.available()) |
|||
{ |
|||
BluetoothData=SoftSerial.read(); |
|||
if(BluetoothData=='1'){ |
|||
digitalWrite(ledpin,1); |
|||
SoftSerial.println("LED On D13 ON ! "); |
|||
} |
|||
if (BluetoothData=='0') |
|||
{ |
|||
digitalWrite(ledpin,0); |
|||
SoftSerial.println("LED On D13 Off ! "); |
|||
} |
|||
} |
|||
delay(100); |
|||
} |
|||
</syntaxhighlight> |
|||
<br /> |
<br /> |
||
Latest revision as of 18:06, 13 April 2020
Here you will find a brief introduction and simple usage guide/instructions along with simple Sketch for arduino based sensors & addons like displays, motors, modules, etc.
This page is under construction. |
TM1637
- Connecting TM1637 4x7 Segment Display to Arduino
Source: tronixstuff.com
#include <Arduino.h> #include <TM1637Display.h> #define CLK 2 #define DIO 3 #define TEST_DELAY 2000 const uint8_t SEG_DONE[] = { SEG_B | SEG_C | SEG_D | SEG_E | SEG_G, // d SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F, // O SEG_C | SEG_E | SEG_G, // n SEG_A | SEG_D | SEG_E | SEG_F | SEG_G // E }; TM1637Display display(CLK, DIO); void setup() { } void loop() { int k; uint8_t data[] = { 0xff, 0xff, 0xff, 0xff }; display.setBrightness(0x0f); // All segments on display.setSegments(data); delay(TEST_DELAY); // Selectively set different digits data[0] = 0b01001001; data[1] = display.encodeDigit(1); data[2] = display.encodeDigit(2); data[3] = display.encodeDigit(3); for(k = 3; k >= 0; k--) { display.setSegments(data, 1, k); delay(TEST_DELAY); } display.setSegments(data+2, 2, 2); delay(TEST_DELAY); display.setSegments(data+2, 2, 1); delay(TEST_DELAY); display.setSegments(data+1, 3, 1); delay(TEST_DELAY); // Show decimal numbers with/without leading zeros bool lz = false; for (uint8_t z = 0; z < 2; z++) { for(k = 0; k < 10000; k += k*4 + 7) { display.showNumberDec(k, lz); delay(TEST_DELAY); } lz = true; } // Show decimal number whose length is smaller than 4 for(k = 0; k < 4; k++) data[k] = 0; display.setSegments(data); display.showNumberDec(153, false, 3, 1); delay(TEST_DELAY); display.showNumberDec(22, false, 2, 2); delay(TEST_DELAY); display.showNumberDec(0, true, 1, 3); delay(TEST_DELAY); display.showNumberDec(0, true, 1, 2); delay(TEST_DELAY); display.showNumberDec(0, true, 1, 1); delay(TEST_DELAY); display.showNumberDec(0, true, 1, 0); delay(TEST_DELAY); // Brightness Test for(k = 0; k < 4; k++) data[k] = 0xff; for(k = 0; k < 16; k++) { display.setBrightness(k); display.setSegments(data); delay(TEST_DELAY); } // Done! display.setSegments(SEG_DONE); while(1); }
DS3231
- Setting Time for first usage
- You can uncomment the below 3 lines from the below give sketch code to set time for first time.
- Set a near future time & either start uploading the code 2-3 seconds before the exact time(which was set).
- Otherwise upload time code before the time & press the reset button on Arduino at the exact time.
- After time is synced, comment these lines & reupload the code again o Arduino.
- Otherwise same time will be set on every powerup or reset of arduino
//rtc.setDOW(WEDNESDAY); // Set Day-of-Week to SUNDAY //rtc.setTime(12, 0, 0); // Set the time to 12:00:00 (24hr format) //rtc.setDate(1, 1, 2014); // Set the date to January 1st, 2014
- DS3231 RTC Clock Using Non-Rechargeable Batteries
Source: raspberrypi-spy.co.uk, woodsgood.ca
- DS3231 RTC Clock with TM1637 Display
Source: instructables.com
#include <TM1637Display.h> #include <TM1637.h> // Arduino Uno/2009: // ---------------------- // DS3231: SDA pin -> Arduino Analog 4 or the dedicated SDA pin // SCL pin -> Arduino Analog 5 or the dedicated SCL pin #include <Wire.h> #include <DS3231.h> #include <config.h> #define DISPLAY_CLK_PIN 2 #define DISPLAY_DIO_PIN 3 int led = 3; TM1637 display(DISPLAY_CLK_PIN, DISPLAY_DIO_PIN); DS3231 rtc(SDA, SCL); Time t; void setup() { Serial.begin(115200); display.set(); display.init(); pinMode(led, OUTPUT); rtc.begin(); // The following lines can be uncommented to set the date and time //rtc.setDOW(WEDNESDAY); // Set Day-of-Week to SUNDAY //rtc.setTime(12, 0, 0); // Set the time to 12:00:00 (24hr format) //rtc.setDate(1, 1, 2014); // Set the date to January 1st, 2014 } void loop() { int8_t timeDisp[4]; t = rtc.getTime(); timeDisp[0] = t.hour / 10; timeDisp[1] = t.hour % 10; timeDisp[2] = t.min / 10; timeDisp[3] = t.min % 10; display.point(t.sec % 2 ? POINT_ON : POINT_OFF); //Colon Blibk display.display(timeDisp); delay (1000); }
- Library
Source: rinkydinkelectronics.com
HC-SR04
- HC-SR04 UltraSonic Distance Sensor with TM1637 Display
Source: codebender.cc
#include <Arduino.h> #include <TM1637Display.h> #include <NewPing.h> const byte TRIGGER_PIN = 11; const byte ECHO_PIN = 12; const int MAX_DISTANCE = 500; const byte CLK = 3; const byte DIO = 4; NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); TM1637Display display(CLK, DIO); void setup() { Serial.begin(115200); display.setBrightness(0x0f); } void loop() { delay(500); int x = sonar.ping_cm(); display.showNumberDec(x,false,3,1); Serial.print(x); Serial.println(" cm"); }
- Library
Source: arduino.cc
MQ-2 Gas Sensor
- If using the sensor for first time, leave it powered on for about 24-48 hours(Burn-in Time).
- Just calibrate it to get about 100-150 from analogRead in a good air condition.
- Normal air returns ~100-150
const int sensorPin= 0; const int buzzerPin= 11; int smoke_level; int powerLED = 13; int greenLED = 9; int redLED = 7; int threshold = 400; // Your threshold value int i = 0; void setup() { pinMode(sensorPin, INPUT); //the smoke sensor will be an input to the arduino pinMode(buzzerPin, OUTPUT); //the buzzer serves an output in the circuit pinMode(powerLED, OUTPUT); Serial.begin(9600); digitalWrite(buzzerPin, LOW); //keep buzzer silent on startup } void pulsePowerLED() { digitalWrite(powerLED, HIGH); delay(100); digitalWrite(powerLED, LOW); delay(100); } void alarm(){ for (int i=0; i<20; i++) { digitalWrite(powerLED, HIGH); digitalWrite(buzzerPin, HIGH); delay(500); digitalWrite(powerLED, LOW); digitalWrite(buzzerPin, LOW); delay(100); } } void loop() { if (millis() / 1000 / 20 < 1) //we need to give the device some time to stabilize { Serial.println("Calibrating for 20 seconds... "); while(millis() / 1000 / 20 < 1) { pulsePowerLED(); //pulse our power / blue LED so the user knows something is happening } Serial.println("Calibrated."); } smoke_level= analogRead(sensorPin); //arduino reads the value from the smoke sensor Serial.println(smoke_level); if(smoke_level > threshold) alarm(); else digitalWrite(buzzerPin, LOW); digitalWrite(powerLED, HIGH); delay(100); digitalWrite(powerLED, LOW); delay(2000); // Wait for 2 seconds }
DS18B20
Source: tweaking4all.com
#include <OneWire.h> #include <DallasTemperature.h> #include <TM1637Display.h> #define ONE_WIRE_BUS 7 OneWire oneWire(ONE_WIRE_BUS); // Setup to communicate with any OneWire device DallasTemperature sensors(&oneWire); #define CLK 3 #define DIO 2 TM1637Display display(CLK, DIO); void setup(void) { Serial.begin(9600); Serial.println("Dallas Temperature IC Control Library"); sensors.begin(); sensors.setResolution(12); display.setBrightness(0x0c); } void loop(void) { sensors.requestTemperatures(); // Send the command to get temperatures delay(1000); float temp = sensors.getTempCByIndex(0); int temp2 = temp * 100; display.showNumberDec(temp2); Serial.print("Temperature is: "); Serial.print(sensors.getTempCByIndex(0)); Serial.print(" C, "); }
JHD162A LCD
Source: rastating.com, circuitstoday.com
Pin 1 to GND Pin 2 to 5v Pin 3 to center pin of 10k ohm Pot(103), One leg to +VCC & other to GND Pin 4 to Arduino pin 12 Pin 5 to GND Pin 6 to Arduino pin 11 Pin 11 to Arduino pin 5 Pin 12 to Arduino pin 4 Pin 13 to Arduino pin 3 Pin 14 to Arduino pin 2 Pin 15 to 5v through a 220 ohm resistor Pin 16 to GND
Simple Text:
#include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); int lastUpdate = 0; int currentIndex = 0; char* lyrics[] = { "Drink all the...", " BOOZE! ", "Hack all the... ", " THINGS! " }; void setup() { lcd.begin(16, 2); // LCD no of lines } void loop() { int time = millis(); if ((time - lastUpdate) >= 800) // print next line after 800ms { lcd.setCursor(0, 0); if (currentIndex == 0 || currentIndex == 2) { lcd.clear(); lcd.setCursor(0, 0); lcd.print(lyrics[currentIndex]); } else { lcd.setCursor(0, 1); lcd.print(lyrics[currentIndex]); } if (currentIndex == 3) // reset of increment index { currentIndex = 0; } else { currentIndex += 1; } lastUpdate = time; } }
Scrolling Text:
#include <LiquidCrystal.h> int pos=0; // variable to hold cursor position LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { lcd.begin(16, 2); //initializes 16x2 LCD lcd.print("Amandeep Singh & Mankirat Singh"); //text to display } void loop() { for(pos=0; pos<1; pos++) { lcd.scrollDisplayLeft(); //scrolls display left by two positions } delay(400); //sets the speed at which display moves }
PIR Sensor
Source: instructables.com
int calibrationTime = 30; //time given to sensor to calibrate long unsigned int lowIn; long unsigned int pause = 5000; boolean lockLow = true; boolean takeLowTime; int pirPin = 7; //Digital pin connected to the PIR sensor's output int ledPin = 8; void setup(){ Serial.begin(9600); pinMode(pirPin, INPUT); pinMode(ledPin, OUTPUT); digitalWrite(pirPin, LOW); Serial.print("calibrating sensor "); for(int i = 0; i < calibrationTime; i++){ Serial.print("."); delay(1000); } Serial.println(" done"); Serial.println("SENSOR ACTIVE"); delay(50); } void loop(){ if(digitalRead(pirPin) == HIGH){ digitalWrite(ledPin, HIGH); if(lockLow){ lockLow = false; Serial.println("---"); Serial.print("motion detected at "); Serial.print(millis()/1000); Serial.println(" sec"); delay(50); } takeLowTime = true; } if(digitalRead(pirPin) == LOW){ digitalWrite(ledPin, LOW); if(takeLowTime){ lowIn = millis(); takeLowTime = false; } if(!lockLow && millis() - lowIn > pause){ lockLow = true; Serial.print("motion ended at "); Serial.print((millis() - pause)/1000); Serial.println(" sec"); delay(50); } } }
Reed Switch
Source: electroschematics.com
int ledOpen=8; int ledClose=10; int switchReed=6; void setup(){ pinMode(ledOpen, OUTPUT); pinMode(ledClose, OUTPUT); pinMode(switchReed, INPUT); Serial.begin(9600); } void loop(){ if (digitalRead(switchReed)==HIGH){ digitalWrite(ledOpen, LOW); digitalWrite(ledClose, HIGH); Serial.println("Your Door is Closed"); } else { digitalWrite(ledOpen, HIGH); digitalWrite(ledClose, LOW); Serial.println("Your Door is Open"); } delay(1000); }
LDR
Source: diyhacking.com
This project will allow you to turn On or Off a LED using LDR.
You can adjust amount of light by adjusting the value of 'sensorValue'.
#include <SoftwareSerial.h> int sensorPin = A0; // select the input pin for the LDR int sensorValue; // variable to store the value coming from the sensor int led = 3; void setup() { pinMode(led, OUTPUT); Serial.begin(9600); } void loop() { sensorValue = analogRead(sensorPin); Serial.println(sensorValue); if(sensorValue < 300) { digitalWrite(led,HIGH); delay(1000); } else digitalWrite(led,LOW); delay(1000); }
Bluetooth Module
Source: instructables.com
#include <SoftwareSerial.h>
SoftwareSerial SoftSerial(10, 11); // RX, TX
int ledpin=13;
int BluetoothData;
void setup()
{
SoftSerial.begin(9600);
SoftSerial.println("Bluetooth On please press 1 or 0 blink LED ..");
pinMode(ledpin,OUTPUT);
}
void loop()
{
if (SoftSerial.available())
{
BluetoothData=SoftSerial.read();
if(BluetoothData=='1'){
digitalWrite(ledpin,1);
SoftSerial.println("LED On D13 ON ! ");
}
if (BluetoothData=='0')
{
digitalWrite(ledpin,0);
SoftSerial.println("LED On D13 Off ! ");
}
}
delay(100);
}
{{#widget:DISQUS |id=networkm |uniqid=Arduino Sensors |url=https://aman.awiki.org/wiki/Arduino_Sensors }}