Wire up as following
- SO -> Arduino pin 12
- SI -> Arduino pin 11
- SCK -> Arduino pin 13
- CS -> Arduino pin 8
- VCC -> Arduino 5V/(3V3) pin
- GND -> Arduino Gnd pin
#include "EtherCard.h"
// ethernet interface mac address, must be unique on the LAN
static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 };
static byte myip[] = { 192,168,1,199 };
byte Ethernet::buffer[500];
BufferFiller bfill;
void setup () {
if (ether.begin(sizeof Ethernet::buffer, mymac) == 0)
Serial.println(F("Failed to access Ethernet controller"));
ether.staticSetup(myip);
}
static word homePage() {
long t = millis() / 1000;
word h = t / 3600;
byte m = (t / 60) % 60;
byte s = t % 60;
bfill = ether.tcpOffset();
bfill.emit_p(PSTR(
"HTTP/1.0 200 OK\r\n"
"Content-Type: text/html\r\n"
"Pragma: no-cache\r\n"
"\r\n"
"#meta http-equiv='refresh' content='1'/>"
"#title>RBBB server#/title>"
"#h1>$D$D:$D$D:$D$D#/h1>"),
h/10, h%10, m/10, m%10, s/10, s%10);
return bfill.position();
}
void loop () {
word len = ether.packetReceive();
word pos = ether.packetLoop(len);
if (pos) // check if valid tcp data is received
ether.httpServerReply(homePage()); // send web page data
}
Compile and upload
Browsing the IP
Then, You will see RBBB server runing...
2015年1月11日 星期日
2015年1月9日 星期五
Arduino pro mini_DS18b20_LCDI2S_SDcard
[SD] -- [Arduino]
CS or SDCS -- D10 or D4
MOSI -- D11
MISO -- D12
CLK or SCK -- D13
#include "OneWire.h"
#include "DallasTemperature.h"
#include "Wire.h"
#include "LiquidCrystal_I2C.h"
#include "SD.h"
int row =0;
LiquidCrystal_I2C lcd(0x27, 16,2);
// Arduino數位腳位9接到1-Wire裝置
#define ONE_WIRE_BUS 9
// 運用程式庫建立物件
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
unsigned long time;
void setup(void)
{
Serial.begin(9600);
pinMode(10, OUTPUT);
if (!SD.begin(10)) {
Serial.println("initialization failed!");
return;
}
Serial.println("initialization done.");
sensors.begin();
//lcd.begin(16,2);
lcd.init();
lcd.backlight();
// initial
Serial.println("CLEARDATA");
Serial.println("LABEL,Time,Timer,Temperature1,Temperature2,");
}
void loop(void)
{
// 要求匯流排上的所有感測器進行溫度轉換
sensors.requestTemperatures();
// 參數0代表匯流排上第0個1-Wire裝置
//Serial.print("DATA,TIME");
Serial.print("DATA,TIME");
Serial.print(",");
Serial.print("TIMER");
Serial.print(",");
Serial.print(sensors.getTempCByIndex(0));
Serial.print(",");
Serial.print(sensors.getTempCByIndex(1));
Serial.println(",");
row ++;
//超過10000行資料後就覆蓋舊資料
/*
if (row > 10000)
{
row=0;
Serial.println("ROW,SET,2");
}
*/
lcd.setCursor(0, 0);
lcd.print("SensorA:");
lcd.print(sensors.getTempCByIndex(0));
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("SensorB:");
lcd.print(sensors.getTempCByIndex(1));
lcd.print("C");
File dataFile = SD.open("Data.TXT",FILE_WRITE);
if (dataFile){
time = millis();
dataFile.print(time);
dataFile.print(",");
dataFile.print(sensors.getTempCByIndex(0));
dataFile.print(",");
dataFile.println(sensors.getTempCByIndex(1));
}
dataFile.close();
delay(100);
}
//http://playground.arduino.cc/Learning/OneWire
//https://github.com/milesburton/Arduino-Temperature-Control-Library
//http://arduino-info.wikispaces.com/file/view/LiquidCrystal_I2C1602V1.zip
CS or SDCS -- D10 or D4
MOSI -- D11
MISO -- D12
CLK or SCK -- D13
#include "OneWire.h"
#include "DallasTemperature.h"
#include "Wire.h"
#include "LiquidCrystal_I2C.h"
#include "SD.h"
int row =0;
LiquidCrystal_I2C lcd(0x27, 16,2);
// Arduino數位腳位9接到1-Wire裝置
#define ONE_WIRE_BUS 9
// 運用程式庫建立物件
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
unsigned long time;
void setup(void)
{
Serial.begin(9600);
pinMode(10, OUTPUT);
if (!SD.begin(10)) {
Serial.println("initialization failed!");
return;
}
Serial.println("initialization done.");
sensors.begin();
//lcd.begin(16,2);
lcd.init();
lcd.backlight();
// initial
Serial.println("CLEARDATA");
Serial.println("LABEL,Time,Timer,Temperature1,Temperature2,");
}
void loop(void)
{
// 要求匯流排上的所有感測器進行溫度轉換
sensors.requestTemperatures();
// 參數0代表匯流排上第0個1-Wire裝置
//Serial.print("DATA,TIME");
Serial.print("DATA,TIME");
Serial.print(",");
Serial.print("TIMER");
Serial.print(",");
Serial.print(sensors.getTempCByIndex(0));
Serial.print(",");
Serial.print(sensors.getTempCByIndex(1));
Serial.println(",");
row ++;
//超過10000行資料後就覆蓋舊資料
/*
if (row > 10000)
{
row=0;
Serial.println("ROW,SET,2");
}
*/
lcd.setCursor(0, 0);
lcd.print("SensorA:");
lcd.print(sensors.getTempCByIndex(0));
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("SensorB:");
lcd.print(sensors.getTempCByIndex(1));
lcd.print("C");
File dataFile = SD.open("Data.TXT",FILE_WRITE);
if (dataFile){
time = millis();
dataFile.print(time);
dataFile.print(",");
dataFile.print(sensors.getTempCByIndex(0));
dataFile.print(",");
dataFile.println(sensors.getTempCByIndex(1));
}
dataFile.close();
delay(100);
}
//http://playground.arduino.cc/Learning/OneWire
//https://github.com/milesburton/Arduino-Temperature-Control-Library
//http://arduino-info.wikispaces.com/file/view/LiquidCrystal_I2C1602V1.zip
2015年1月8日 星期四
Merge DS18b20 & 1602 i2c pde
#include "Wire.h"
#include "LiquidCrystal_I2C.h"
#include "OneWire.h"
#include "DallasTemperature.h"
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
LiquidCrystal_I2C lcd(0x27,16,2);
void setup()
{
lcd.init();
lcd.backlight();
lcd.print("Room Temperature");
Serial.begin(115200);
Serial.println("Temperature Sensor");
sensors.begin();
}
void loop()
{
sensors.requestTemperatures();
Serial.println(sensors.getTempCByIndex(0));
lcd.setCursor(5, 1);
lcd.print(sensors.getTempCByIndex(0));
lcd.print(" C");
delay(1000);
}
#include "LiquidCrystal_I2C.h"
#include "OneWire.h"
#include "DallasTemperature.h"
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
LiquidCrystal_I2C lcd(0x27,16,2);
void setup()
{
lcd.init();
lcd.backlight();
lcd.print("Room Temperature");
Serial.begin(115200);
Serial.println("Temperature Sensor");
sensors.begin();
}
void loop()
{
sensors.requestTemperatures();
Serial.println(sensors.getTempCByIndex(0));
lcd.setCursor(5, 1);
lcd.print(sensors.getTempCByIndex(0));
lcd.print(" C");
delay(1000);
}
2015年1月7日 星期三
Arduino DS18b20 & 1602 i2c
Temperature DS18b20
#include "OneWire.h"
#include "DallasTemperature.h"
// Arduino數位腳位2接到1-Wire裝置
#define ONE_WIRE_BUS 2
// 運用程式庫建立物件
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup(void)
{
Serial.begin(115200);
Serial.println("Temperature Sensor");
// 初使化
sensors.begin();
}
void loop(void)
{
// 要求匯流排上的所有感測器進行溫度轉換(不過我只有一個)
sensors.requestTemperatures();
// 取得溫度讀數(攝氏)並輸出,
// 參數0代表匯流排上第0個1-Wire裝置
Serial.println(sensors.getTempCByIndex(0));
delay(1000);
}
LCD 1602 i2c
#include "Wire.h"
#include "LiquidCrystal_I2C.h"
LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display
void setup()
{
lcd.init(); // initialize the lcd
// Print a message to the LCD.
lcd.backlight();
lcd.print("Hello, Dennis Liao!");
}
void loop()
{
}
#include "OneWire.h"
#include "DallasTemperature.h"
// Arduino數位腳位2接到1-Wire裝置
#define ONE_WIRE_BUS 2
// 運用程式庫建立物件
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup(void)
{
Serial.begin(115200);
Serial.println("Temperature Sensor");
// 初使化
sensors.begin();
}
void loop(void)
{
// 要求匯流排上的所有感測器進行溫度轉換(不過我只有一個)
sensors.requestTemperatures();
// 取得溫度讀數(攝氏)並輸出,
// 參數0代表匯流排上第0個1-Wire裝置
Serial.println(sensors.getTempCByIndex(0));
delay(1000);
}
LCD 1602 i2c
#include "Wire.h"
#include "LiquidCrystal_I2C.h"
LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display
void setup()
{
lcd.init(); // initialize the lcd
// Print a message to the LCD.
lcd.backlight();
lcd.print("Hello, Dennis Liao!");
}
void loop()
{
}
2015年1月4日 星期日
Arduino IR remote control
ref. Ken Shirriff's blog
http://www.righto.com/2009/08/multi-protocol-infrared-remote-library.html
Step 1.
The
#include "IRremote.h"
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
}
void loop() {
if (irrecv.decode(&results)) {
Serial.print(results.value, HEX);
Serial.print(", bits is ");
Serial.print(results.bits);
Serial.print(", decode_type is ");
Serial.println(results.decode_type);
irrecv.resume(); // Receive the next value
}
}
Step 2.
#include "IRremote.h"
int receiver = 11; // pin 11 of IR receiver to Arduino digital pin 11
IRrecv irrecv(receiver); // create instance of 'irrecv'
decode_results results; // create instance of 'decode_results'
void setup()
{
Serial.begin(9600);
Serial.println("IR Receiver Raw Data + Button Decode Test");
irrecv.enableIRIn(); // Start the receiver
}
void loop()
{
if (irrecv.decode(&results))
{
translateIR();
irrecv.resume();
}
}
void translateIR() // takes action based on IR code received
{
switch(results.value)
{
case 0xE995F5AE:
Serial.println(" CH- ");
break;
case 0x8311AD20:
Serial.println(" CH+ ");
break;
default:
Serial.println(" other button ");
}
delay(500);
}
http://www.righto.com/2009/08/multi-protocol-infrared-remote-library.html
Step 1.
The
examples/IRrecvDemo sketch provides a simple example of how to receive codes:#include "IRremote.h"
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
}
void loop() {
Serial.print(results.value, HEX);
Serial.print(", bits is ");
Serial.print(results.bits);
Serial.print(", decode_type is ");
Serial.println(results.decode_type);
irrecv.resume(); // Receive the next value
}
}
#define NEC 1 #define SONY 2 #define RC5 3 #define RC6 4 #define DISH 5 #define SHARP 6 #define PANASONIC 7 #define JVC 8 #define SANYO 9 #define MITSUBISHI 10 #define UNKNOWN -1
Step 2.
#include "IRremote.h"
int receiver = 11; // pin 11 of IR receiver to Arduino digital pin 11
IRrecv irrecv(receiver); // create instance of 'irrecv'
decode_results results; // create instance of 'decode_results'
void setup()
{
Serial.begin(9600);
Serial.println("IR Receiver Raw Data + Button Decode Test");
irrecv.enableIRIn(); // Start the receiver
}
void loop()
{
if (irrecv.decode(&results))
{
translateIR();
irrecv.resume();
}
}
void translateIR() // takes action based on IR code received
{
switch(results.value)
{
case 0xE995F5AE:
Serial.println(" CH- ");
break;
case 0x8311AD20:
Serial.println(" CH+ ");
break;
default:
Serial.println(" other button ");
}
delay(500);
}
2014年10月22日 星期三
訂閱:
文章 (Atom)








