//LED灯
int LED = 7;//定义7为输出引脚
void setup()
{
pinMode(LED, OUTPUT);
}
void loop()
{
digitalWrite(LED, HIGH);//点亮LED灯
delay(1000);//持续1秒
digitalWrite(LED, LOW);//熄灭LED灯
delay(1000);//持续1秒
}
//按键控制LED
int ledpin = 11;//定义数字11接口
int inpin = 7;//定义数字7接口
int val;//定义变量val
void setup()
{
pinMode(ledpin, OUTPUT);//定义小灯接口为输出接口
pinMode(inpin, INPUT);//定义按键接口为输入接口
}
void loop()
{
val = digitalRead(inpin);//读取数字7 电平值赋给val
if (val == LOW)//检测按键是否按下,按键按下时小灯亮起
{
digitalWrite(ledpin, HIGH);//高频小灯亮起
}
else
{
digitalWrite(ledpin, LOW);//低频小灯亮起
}
}
//控制蜂鸣器
int buzzer = 6;//设置控制蜂鸣器的数字10脚
void setup()
{
pinMode(buzzer, OUTPUT);//设置数字10脚模式,OUTPUT为输出
}
void loop()
{
unsigned char i, j;//定义变量
while (1)
{
for (i = 0; i < 80; i++)//输出一个频率的声音
{
digitalWrite(buzzer, HIGH);//发声音
delay(1);//延时1ms
digitalWrite(buzzer, LOW);//不发声音
delay(1);//延时1ms
}
for (j = 0; j < 100; j++)//输出另一个频率的声音
{
digitalWrite(buzzer, HIGH);//发声音
delay(2);//延时2ms
digitalWrite(buzzer, LOW);//不发声音
delay(2);//延时2ms
}
}
}
//继电器
#define relay 8//定义控制光耦继电器为PIN 8
void setup()
{
pinMode(relay, OUTPUT);//设置PIN 8为输出模式
}
void loop()
{
digitalWrite(relay, HIGH);//给出高电平,光耦吸合常开端与公共端连接,常闭端与公共端断开
delay(1000);
digitalWrite(relay, LOW);//给出低电平,光耦离开常开端与公共端断开,常闭端与公共端断开
delay(1000);
}
//舵机
#include<Servo.h>
#define PIN_SERVO 9
Servo myservo;
void setup()
{
myservo.attach(PIN_SERVO);
}
void loop()
{
myservo.write(0);
delay(1000);
myservo.write(80);
delay(1000);
myservo.write(160);
delay(1000);
myservo.write(80);
delay(1000);
myservo.write(0);
delay(1000);
}
//串口通信实验
int instruction = 0;
void setup()
{
Serial.begin(9600);//设置串口波特率为9600(开启串口)
Serial.println(97, BIN);//"1100001"(串口输出数据,写入字符数据到串口,并换行)二进制
Serial.println(97, OCT);//"141"八进制
Serial.println(97, DEC);//"97"十进制
Serial.println(97, HEX);//"61"十六进制
Serial.println(3.14159,0);//"3"
Serial.println(3.14159,2);//"3.14"
Serial.println(3.14159,4);//"3.1416"
Serial.println('Y');
Serial.println("Hello");
}
void loop()
{
if (Serial.available() > 0)//串口接收到数据
{
instruction = Serial.read();//获得串口接收到的数据
if (instruction == 'H')
{
Serial.println("HanDan University");
}
}
delay(1000);
}
//控制数码管
# define D_a 2//数码管a接引脚2
# define D_b 3
# define D_c 4
# define D_d 5
# define D_e 6
# define D_f 7
# define D_g 8
# define D_h 9
unsigned char num[17][8] =
{//0为点亮,1为关闭,a表示数码管a的LED灯,其他类似
{0,0,0,0,0,0,1,1},//0
{1,0,0,1,1,1,1,1},//1
{0,0,1,0,0,1,0,1},//2
{0,0,0,0,1,1,0,1},//3
{1,0,0,1,1,0,0,1},//4
{0,1,0,0,1,0,0,1},//5
{0,1,0,0,0,0,0,1},//6
{0,0,0,1,1,1,1,1},//7
{0,0,0,0,0,0,0,1},//8
{0,0,0,0,1,0,0,1},//9
{0,0,0,1,0,0,0,1},//A
{0,0,0,0,0,0,0,1},//B
{0,1,1,0,0,0,1,1},//C
{0,0,0,0,0,0,1,1},//D
{0,1,1,0,0,0,0,1},//E
{0,1,1,1,0,0,0,1},//F
{1,1,1,1,1,1,1,0},// .
};
void setup()
{
pinMode(D_a, OUTPUT);//设置引脚输出
pinMode(D_b, OUTPUT);
pinMode(D_c, OUTPUT);
pinMode(D_d, OUTPUT);
pinMode(D_e, OUTPUT);
pinMode(D_f, OUTPUT);
pinMode(D_g, OUTPUT);
pinMode(D_h, OUTPUT);
}
void loop()
{
for (int i = 0; i < 17; i++)//按数序显示0123456789ABCDEF.
{
digitalWrite(D_a, num[i][0]);//设置a引脚的电平
digitalWrite(D_b, num[i][1]);
digitalWrite(D_c, num[i][2]);
digitalWrite(D_d, num[i][3]);
digitalWrite(D_e, num[i][4]);
digitalWrite(D_f, num[i][5]);
digitalWrite(D_g, num[i][6]);
digitalWrite(D_h, num[i][7]);
delay(1000);//延迟1秒
}
}
//控制1602显示屏
// 第一种 四线模式(失败 原因不知)
/*Arduino 在 4 位接法下不使用 LiquidCrystal 库
* 输出 Hello World 和 Welcome to HandanUniversity! * * */
int RS = 12; //数据/命令选择器引脚(RS)
int RW = 11; //读/写选择器引脚(R/W)
int DB[] = { 6, 7, 8, 9 }; //使用数组来定义总线需要的管脚(D4-D7)
int Enable = 10; //使能(E)
void LcdCommandWrite(int value)
{
// 定义所有引脚
int i = 0;
digitalWrite(Enable, LOW);
delayMicroseconds(1); // 延时 1us
digitalWrite(RS, LOW);
digitalWrite(RW, LOW);
/* 6 7 8 9
* D7 D6 D5 D4
* DB[0] DB[1] DB[2] DB[3]
*/
int temp = value & 0xf0;//取指令高 4 位
for (i=DB[0]; i <= 9; i++)
{
if ((temp & 0x80) != 0)//取指令最高位
digitalWrite(i,HIGH);
else
digitalWrite(i, LOW);
temp <<= 1;
}
delayMicroseconds(1); // 延时 1us
digitalWrite(Enable,HIGH);
delayMicroseconds(1); // 延时 1us
digitalWrite(Enable,LOW);
temp = (value & 0x0f) << 4;
for (i = DB[0]; i <= 9; i++)
{
if ((temp & 0x80) != 0)//取指令最高位
digitalWrite(i,HIGH);
else
digitalWrite(i, LOW);
temp <<= 1;
}
delayMicroseconds(1); // 延时 1us
digitalWrite(Enable,HIGH);
delayMicroseconds(1); // 延时 1us
digitalWrite(Enable,LOW);
delayMicroseconds(1); // 延时 1us
}
void LcdDataWrite(int value)
{
// 定义所有引脚
int i = 0;
digitalWrite(Enable, LOW);
delayMicroseconds(1); // 延时 1us
digitalWrite(RS, HIGH);
digitalWrite(RW, LOW);
int temp=value& 0xf0;
for (i = DB[0]; i <= 9; i++)
{
if ((temp & 0x80) != 0)//取指令最高位
digitalWrite(i,HIGH);
else
digitalWrite(i, LOW);
temp <<= 1;
}
digitalWrite(Enable, HIGH);
delayMicroseconds(1); // 延时 1us
digitalWrite(Enable,LOW);
temp = (value & 0x0f) << 4;
for (i = DB[0]; i <= 9; i++)
{
if ((temp & 0x80) != 0)//取指令最高位
digitalWrite(i,HIGH);
else
digitalWrite(i, LOW);
temp <<= 1;
}
delayMicroseconds(1); // 延时 1us
digitalWrite(Enable,HIGH);
delayMicroseconds(1); // 延时 1us
digitalWrite(Enable,LOW);
delayMicroseconds(1); // 延时 1us
}
void setup(void)
{
int i = 0;
for (i = Enable; i <= RS; i++)
{
pinMode(i, OUTPUT);
}
delay(100);
// 短暂的停顿后初始化 LCD
// 用于 LCD 控制需要
LcdCommandWrite(0x38); // 设置为 8-bit 接口,2 行显示,5x7 文字大小
delay(20);
LcdCommandWrite(0x06); // 输入方式设定,自动增量,画面没有移位
delay(20);
LcdCommandWrite(0x0C); // 显示设置,开启显示屏,光标关,无闪烁
delay(20);
}
void loop(void)
{
LcdCommandWrite(0x01); // 屏幕清空,光标位置归零
delay(10);
LcdCommandWrite(0x80 + 5); // 定义光标位置为第一行第五个位置
delay(10);
// 写入欢迎信息
LcdDataWrite('H');
LcdDataWrite('e');
LcdDataWrite('l');
LcdDataWrite('l');
LcdDataWrite('o');
delay(10);
LcdCommandWrite(0xc0 + 5); // 定义光标位置为第二行第五个位置 delay(10);
LcdDataWrite('W');
LcdDataWrite('o');
LcdDataWrite('r');
LcdDataWrite('l');
LcdDataWrite('d');
LcdDataWrite('!');
delay(3000);
LcdCommandWrite(0x01); // 屏幕清空,光标位置归零
delay(10);
LcdCommandWrite(0x80 + 2); //定义光标位置为第一行第二个位置
delay(10);
LcdDataWrite('W');
LcdDataWrite('e');
LcdDataWrite('l');
LcdDataWrite('c');
LcdDataWrite('o');
LcdDataWrite('m');
LcdDataWrite('e');
LcdDataWrite(' ');
LcdDataWrite('t');
LcdDataWrite('o');
LcdCommandWrite(0xc0); // 定义光标位置为第二行起始位置
delay(10);
LcdDataWrite('H');
LcdDataWrite('a');
LcdDataWrite('n');
LcdDataWrite('d');
LcdDataWrite('a');
LcdDataWrite('n');
LcdDataWrite('U');
LcdDataWrite('n');
LcdDataWrite('i');
LcdDataWrite('v');
LcdDataWrite('e');
LcdDataWrite('r');
LcdDataWrite('s');
LcdDataWrite('i');
LcdDataWrite('t');
LcdDataWrite('y');
delay(10);
delay(5000);
}
//第二种
#include<LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 10, 9, 8, 7, 6);//初始化LED
void setup()
{
lcd.begin(16, 2);//设置LED为16列*2行
}
void loop()
{
lcd.clear();//清屏操作
lcd.setCursor(5, 0);//设置光标位置为第一行,第六列
lcd.print("Hello");//在LED上输出信息
delay(10);//延时程序
lcd.setCursor(5, 1);
lcd.print("World");
delay(3000);
lcd.clear();
lcd.setCursor(2, 0);
lcd.print("Welcome to");
lcd.setCursor(0, 1);
lcd.print("HanDanUniversity");
delay(5000);
}
//控制12864显示屏
//大屏
#include <Arduino.h>
//#ifndef LCD12864R_h
#define LCD12864R_h
#include <stdio.h> //not needed yet
#include <string.h> //needed for strlen()
#include <avr/pgmspace.h>
#include <inttypes.h>
#define AR_SIZE( a ) sizeof( a ) / sizeof( a[0] )
unsigned char show0[] = { 0xBA, 0xAA,0xB5, 0xA6,0xD1, 0xA7,0xD4, 0xBA };
unsigned char show1[] = "HanDanUniversity";
unsigned char logo[] =
{
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X03,0XFC,0X00,0X00,0XFE,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0XF8,0X00,0X00,0X00,0X00,0X78,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X1E,0X00,0XC0,0X00,0X00,0X30,0X03,0XC0,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0XE0,0X35,0XC0,0X00,0X00,0X6D,0XE0,0X1C,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X07,0X14,0XC1,0XA0,0X00,0X00,0X38,0XF8,0X83,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X38,0X65,0XB6,0X60,0X00,0X00,0X47,0XA5,0X80,0XE0,0X00,0X00,0X00,
0X00,0X00,0X00,0XC0,0X09,0X90,0X20,0X00,0X00,0X94,0X4C,0X00,0X1C,0X00,0X00,0X00,
0X00,0X00,0X03,0X00,0X0C,0XC0,0X30,0X00,0X00,0X03,0XE4,0X00,0X03,0X00,0X00,0X00,
0X00,0X00,0X1C,0X00,0X02,0X20,0X08,0X00,0X00,0X0C,0X04,0X00,0X00,0XC0,0X00,0X00,
0X00,0X00,0X20,0X00,0X00,0X30,0X3F,0XFF,0XFF,0XE0,0X08,0X00,0X00,0X30,0X00,0X00,
0X00,0X00,0XC0,0X00,0X00,0X0F,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X0C,0X00,0X00,
0X00,0X03,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X02,0X00,0X00,
0X00,0X04,0X40,0X00,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X61,0X80,0X00,
0X00,0X19,0X2C,0X00,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0XC8,0X40,0X00,
0X00,0X32,0X64,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X0F,0X78,0X20,0X00,
0X00,0X45,0X72,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X75,0XE4,0X18,0X00,
0X00,0X86,0XA9,0XE7,0XFF,0XFF,0XFF,0XFE,0X00,0X1F,0XFF,0XFE,0X00,0X19,0X0C,0X00,
0X01,0X18,0X70,0X0F,0XFF,0XFF,0XFF,0XF3,0XDF,0X83,0XFF,0XFF,0X83,0XCA,0XC6,0X00,
0X02,0X07,0X00,0X3F,0XFF,0XFF,0XFF,0XEF,0XDF,0XFD,0XFF,0XFF,0XC3,0XF5,0X43,0X00,
0X04,0X04,0XE0,0X7F,0XFF,0XFF,0XFF,0XEF,0XDF,0XFC,0XFF,0XFF,0XF0,0X26,0X61,0X00,
0X0C,0X09,0X20,0XFF,0XFF,0XFF,0XFF,0XE7,0XCF,0XF9,0XFF,0XFF,0XF8,0XCF,0XE0,0X80,
0X08,0XFA,0X41,0XFF,0XFF,0XFF,0XFF,0XF9,0XE7,0XE3,0XFF,0XFF,0XFC,0X98,0X00,0XC0,
0X10,0X0F,0X83,0XFF,0XFF,0XFF,0XFF,0XFD,0XF7,0X0F,0XFF,0XFF,0XFE,0X60,0X00,0X40,
0X30,0X00,0X07,0XFF,0XFC,0X00,0X1F,0XFF,0XF4,0X7F,0XFC,0X00,0XFE,0X00,0X00,0X20,
0X20,0X00,0X07,0XFF,0XC1,0X83,0X87,0XFF,0XE1,0XFF,0X80,0X01,0XFF,0X00,0X00,0X20,
0X20,0X00,0X0F,0XFF,0X1F,0XF8,0X60,0XFF,0X8F,0XF8,0X00,0X11,0XFF,0X80,0X00,0X30,
0X60,0X00,0X0F,0XFE,0X4F,0XFE,0X18,0X7F,0XB7,0X80,0X02,0X07,0XFF,0X80,0X00,0X10,
0X40,0X00,0X1F,0XFE,0X07,0XFF,0X8E,0X1F,0X9E,0X00,0XF9,0XBF,0XFF,0X80,0X00,0X10,
0X40,0X00,0X1F,0XFF,0X0F,0XFF,0XE3,0X86,0X70,0X8F,0XFF,0XFF,0XFF,0XC0,0X00,0X10,
0X40,0X00,0X1F,0XFF,0XDF,0XFF,0XFC,0X60,0XE2,0X7F,0XFF,0XFF,0XFF,0XC0,0X00,0X18,
0X40,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0X90,0X09,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X18,
0X40,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XC7,0X0F,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X18,
0X40,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0X8F,0X0F,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X10,
0X40,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0X1F,0X0F,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X10,
0X60,0X00,0X0F,0XFF,0XFF,0XFF,0XFE,0X3E,0X1F,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X10,
0X20,0X00,0X0F,0XFF,0XFF,0XFF,0XF8,0XFC,0X3F,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X30,
0X20,0X00,0X07,0XFF,0XFF,0XFF,0XE7,0XF0,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X20,
0X10,0X00,0X07,0XFF,0XFF,0X0E,0X1F,0XC3,0XFF,0XFF,0XFF,0XFF,0XFE,0X00,0X00,0X20,
0X10,0X00,0X03,0XFF,0XFF,0X13,0XFC,0X1F,0XFF,0XFF,0XFF,0XFF,0XFE,0X00,0X00,0X40,
0X08,0X03,0XC1,0XFF,0X83,0XFF,0XC0,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X08,0X00,0XC0,
0X0C,0X18,0X20,0XFF,0X1F,0XF0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X04,0X00,0X80,
0X04,0X03,0X80,0X7F,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X03,0X81,0X00,
0X02,0X04,0X00,0X3F,0XF3,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X03,0X00,
0X01,0X00,0X00,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X81,0X80,0X06,0X00,
0X00,0X81,0X2C,0X07,0XFF,0XFF,0XF3,0XEF,0X9E,0X3F,0XFF,0XFE,0X02,0XE0,0X0C,0X00,
0X00,0X40,0X30,0X01,0XFF,0XFF,0XF3,0X93,0X26,0X1F,0XFF,0XFE,0X00,0X18,0X18,0X00,
0X00,0X30,0X20,0X40,0XFF,0XFF,0XF3,0XD3,0X27,0X9F,0XFF,0XF8,0X18,0X00,0X20,0X00,
0X00,0X18,0X00,0X40,0X3F,0XFF,0XFB,0XE7,0X8E,0X7F,0XFF,0XC0,0X06,0X00,0XC0,0X00,
0X00,0X04,0X04,0X80,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X01,0X01,0X80,0X00,
0X00,0X03,0X01,0X81,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0XE0,0X06,0X00,0X00,
0X00,0X00,0XC0,0X06,0X80,0X0F,0XFF,0XFF,0XFF,0XFF,0X00,0X10,0X10,0X0C,0X00,0X00,
0X00,0X00,0X30,0X08,0X80,0X00,0X3F,0XFF,0XFF,0XE0,0X00,0X48,0X40,0X30,0X00,0X00,
0X00,0X00,0X0C,0X03,0X06,0X00,0X00,0X00,0X00,0X00,0X04,0X36,0X00,0XC0,0X00,0X00,
0X00,0X00,0X03,0X00,0X04,0X18,0X00,0X00,0X00,0X02,0X30,0X18,0X03,0X00,0X00,0X00,
0X00,0X00,0X00,0XC0,0X0C,0X0A,0X01,0X00,0X03,0X18,0X19,0X00,0X18,0X00,0X00,0X00,
0X00,0X00,0X00,0X18,0X00,0X0C,0X01,0X01,0XA1,0X04,0X0C,0X00,0XE0,0X00,0X00,0X00,
0X00,0X00,0X00,0X07,0X00,0X04,0X01,0X20,0XE1,0X02,0X00,0X03,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0XE0,0X00,0X01,0X02,0X21,0X80,0X00,0X3C,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X1E,0X00,0X00,0X00,0X00,0X00,0X03,0XC0,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0XF8,0X00,0X00,0X00,0X00,0XF8,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X03,0XFC,0X00,0X01,0XFE,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00
};
int ScreenBuffer[16][32];
int delaytime;
int DEFAULTTIME;
int RS = 17;
int RW = 16;
int EN = 18;
int D0 = 8;
int D1 = 9;
int D2 = 10;
int D3 = 11;
int D4 = 4;
int D5 = 5;
int D6 = 6;
int D7 = 7;
int temp[8];
/*LCD12864R::LCD12864R()
{
this->DEFAULTTIME = 300; // 80 ms default time this->delaytime = DEFAULTTIME;
} */
void setPins(uint8_t tRS, uint8_t tRW, uint8_t tD7, uint8_t tD6, uint8_t tD5, uint8_t tD4, uint8_t tD3, uint8_t tD2, uint8_t tD1, uint8_t tD0)
{
digitalWrite(EN, 1);
delayns();
digitalWrite(RS, tRS);
digitalWrite(RW, tRW);
digitalWrite(D7, tD7);
digitalWrite(D6, tD6);
digitalWrite(D5, tD5);
digitalWrite(D4, tD4);
digitalWrite(D3, tD3);
digitalWrite(D2, tD2);
digitalWrite(D1, tD1);
digitalWrite(D0, tD0);
delayns();
digitalWrite(EN, 0);
delayns();
}
//*********************延时函数************************//
void delayns(void)
{
delayMicroseconds(delaytime);
}
void VectorConverter(int vector)
{
int result = vector;
for (int i = 7; i >= 0; i--)
{
temp[i] = result % 2;
result = result / 2;
}
}
void WriteCommand(int CMD)
{
delayns();
delayns();
VectorConverter(CMD); // lets get the binary from the dec
setPins(0,0,temp[0],temp[1],temp[2],temp[3],temp[4],temp[5],temp[6],temp[7]); //WriteCommand
}
void WriteData(int CMD)
{
delayns();
delayns();
VectorConverter(CMD); // lets get the binary from the dec
setPins(1,0,temp[0],temp[1],temp[2],temp[3],temp[4],temp[5],temp[6],temp[7]); //WriteData
}
void Initialise(void)
{
pinMode(RS, OUTPUT);
pinMode(RW, OUTPUT);
pinMode(EN, OUTPUT);
pinMode(D0, OUTPUT);
pinMode(D1, OUTPUT);
pinMode(D2, OUTPUT);
pinMode(D3, OUTPUT);
pinMode(D4, OUTPUT);
pinMode(D5, OUTPUT);
pinMode(D6, OUTPUT);
pinMode(D7, OUTPUT);
delayns();
WriteCommand(0x30); //功能设定控制字
WriteCommand(0x0c); //显示开关控制字
WriteCommand(0x01); //清除屏幕控制字
WriteCommand(0x06); //进入设定点控制字
}
void CLEAR(void)
{
WriteCommand(0x30);
WriteCommand(0x01);//清除显示
}
void DisplayString(int X, int Y, unsigned char* ptr, int dat)
{
int i;
switch (X)
{
case 0: Y |= 0x80; break;
case 1: Y |= 0x90; break;
case 2: Y |= 0x88; break;
case 3: Y |= 0x98; break;
default: break;
}
WriteCommand(Y); // 定位显示起始地址
for (i = 0; i < dat; i++)
{
WriteData(ptr[i]);//显示汉字时注意码值,连续两个码表示一个汉字
}
}
void DisplaySig(int M, int N, int sig)
{
switch (M)
{
case 0: N |= 0x80; break;
case 1: N |= 0x90; break;
case 2: N |= 0x88; break;
case 3: N |= 0x98; break;
default: break;
}
WriteCommand(N); // 定位显示起始地址
WriteData(sig); //输出单个字符
}
void DrawFullScreen(unsigned char* p)
{
int ygroup, x, y, i;
int temp;
int tmp;
for (ygroup = 0; ygroup < 64; ygroup++) //写入液晶上半图象部分
{ //写入坐标
if (ygroup < 32)
{
x = 0x80;
y = ygroup + 0x80;
}
else
{
x = 0x88;
y = ygroup - 32 + 0x80;
}
WriteCommand(0x34); //写入扩充指令命令
WriteCommand(y); //写入 y 轴坐标
WriteCommand(x); //写入 x 轴坐标
WriteCommand(0x30); //写入基本指令命令
tmp = ygroup * 16;
for (i = 0; i < 16; i++)
{
temp = p[tmp++];
WriteData(temp);
}
}
WriteCommand(0x34); //写入扩充指令命令
WriteCommand(0x36); //显示图象
}
void setup()
{
Initialise(); // 屏幕初始化
delay(100);
}
void loop()
{
CLEAR();//清屏
delay(100);
DisplayString(0, 2, show0, AR_SIZE(show0));//第一行第三格开始,显示文字邯郸学院
delay(100);
DisplayString(2, 0, show1, AR_SIZE(show1));//第三行第二格开始,显示Handan University
delay(2000);
CLEAR();//清屏
delay(100);
DrawFullScreen(logo);//第一行第三格开始,显示文字邯郸学院
delay(2000);
}
//小屏
#include <Wire.h>//申明OLED 12864的函数库 IIC接口
#include <Adafruit_GFX.h>//申明OLED 12864的函数库
#include <Adafruit_SSD1306.h>//申明OLED 12864的函数库
#define OLED_RESET 8
Adafruit_SSD1306 display(OLED_RESET);
static const unsigned char PROGMEM logo[] = // 邯郸学院logo 注意,不能漏写了PROGMEM,这个是动态内存控制的关键
{
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X03,0XFC,0X00,0X00,0XFE,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0XF8,0X00,0X00,0X00,0X00,0X78,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X1E,0X00,0XC0,0X00,0X00,0X30,0X03,0XC0,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0XE0,0X35,0XC0,0X00,0X00,0X6D,0XE0,0X1C,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X07,0X14,0XC1,0XA0,0X00,0X00,0X38,0XF8,0X83,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X38,0X65,0XB6,0X60,0X00,0X00,0X47,0XA5,0X80,0XE0,0X00,0X00,0X00,
0X00,0X00,0X00,0XC0,0X09,0X90,0X20,0X00,0X00,0X94,0X4C,0X00,0X1C,0X00,0X00,0X00,
0X00,0X00,0X03,0X00,0X0C,0XC0,0X30,0X00,0X00,0X03,0XE4,0X00,0X03,0X00,0X00,0X00,
0X00,0X00,0X1C,0X00,0X02,0X20,0X08,0X00,0X00,0X0C,0X04,0X00,0X00,0XC0,0X00,0X00,
0X00,0X00,0X20,0X00,0X00,0X30,0X3F,0XFF,0XFF,0XE0,0X08,0X00,0X00,0X30,0X00,0X00,
0X00,0X00,0XC0,0X00,0X00,0X0F,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X0C,0X00,0X00,
0X00,0X03,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X02,0X00,0X00,
0X00,0X04,0X40,0X00,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X61,0X80,0X00,
0X00,0X19,0X2C,0X00,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0XC8,0X40,0X00,
0X00,0X32,0X64,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X0F,0X78,0X20,0X00,
0X00,0X45,0X72,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X75,0XE4,0X18,0X00,
0X00,0X86,0XA9,0XE7,0XFF,0XFF,0XFF,0XFE,0X00,0X1F,0XFF,0XFE,0X00,0X19,0X0C,0X00,
0X01,0X18,0X70,0X0F,0XFF,0XFF,0XFF,0XF3,0XDF,0X83,0XFF,0XFF,0X83,0XCA,0XC6,0X00,
0X02,0X07,0X00,0X3F,0XFF,0XFF,0XFF,0XEF,0XDF,0XFD,0XFF,0XFF,0XC3,0XF5,0X43,0X00,
0X04,0X04,0XE0,0X7F,0XFF,0XFF,0XFF,0XEF,0XDF,0XFC,0XFF,0XFF,0XF0,0X26,0X61,0X00,
0X0C,0X09,0X20,0XFF,0XFF,0XFF,0XFF,0XE7,0XCF,0XF9,0XFF,0XFF,0XF8,0XCF,0XE0,0X80,
0X08,0XFA,0X41,0XFF,0XFF,0XFF,0XFF,0XF9,0XE7,0XE3,0XFF,0XFF,0XFC,0X98,0X00,0XC0,
0X10,0X0F,0X83,0XFF,0XFF,0XFF,0XFF,0XFD,0XF7,0X0F,0XFF,0XFF,0XFE,0X60,0X00,0X40,
0X30,0X00,0X07,0XFF,0XFC,0X00,0X1F,0XFF,0XF4,0X7F,0XFC,0X00,0XFE,0X00,0X00,0X20,
0X20,0X00,0X07,0XFF,0XC1,0X83,0X87,0XFF,0XE1,0XFF,0X80,0X01,0XFF,0X00,0X00,0X20,
0X20,0X00,0X0F,0XFF,0X1F,0XF8,0X60,0XFF,0X8F,0XF8,0X00,0X11,0XFF,0X80,0X00,0X30,
0X60,0X00,0X0F,0XFE,0X4F,0XFE,0X18,0X7F,0XB7,0X80,0X02,0X07,0XFF,0X80,0X00,0X10,
0X40,0X00,0X1F,0XFE,0X07,0XFF,0X8E,0X1F,0X9E,0X00,0XF9,0XBF,0XFF,0X80,0X00,0X10,
0X40,0X00,0X1F,0XFF,0X0F,0XFF,0XE3,0X86,0X70,0X8F,0XFF,0XFF,0XFF,0XC0,0X00,0X10,
0X40,0X00,0X1F,0XFF,0XDF,0XFF,0XFC,0X60,0XE2,0X7F,0XFF,0XFF,0XFF,0XC0,0X00,0X18,
0X40,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0X90,0X09,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X18,
0X40,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XC7,0X0F,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X18,
0X40,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0X8F,0X0F,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X10,
0X40,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0X1F,0X0F,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X10,
0X60,0X00,0X0F,0XFF,0XFF,0XFF,0XFE,0X3E,0X1F,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X10,
0X20,0X00,0X0F,0XFF,0XFF,0XFF,0XF8,0XFC,0X3F,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X30,
0X20,0X00,0X07,0XFF,0XFF,0XFF,0XE7,0XF0,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X20,
0X10,0X00,0X07,0XFF,0XFF,0X0E,0X1F,0XC3,0XFF,0XFF,0XFF,0XFF,0XFE,0X00,0X00,0X20,
0X10,0X00,0X03,0XFF,0XFF,0X13,0XFC,0X1F,0XFF,0XFF,0XFF,0XFF,0XFE,0X00,0X00,0X40,
0X08,0X03,0XC1,0XFF,0X83,0XFF,0XC0,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X08,0X00,0XC0,
0X0C,0X18,0X20,0XFF,0X1F,0XF0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X04,0X00,0X80,
0X04,0X03,0X80,0X7F,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X03,0X81,0X00,
0X02,0X04,0X00,0X3F,0XF3,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X03,0X00,
0X01,0X00,0X00,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X81,0X80,0X06,0X00,
0X00,0X81,0X2C,0X07,0XFF,0XFF,0XF3,0XEF,0X9E,0X3F,0XFF,0XFE,0X02,0XE0,0X0C,0X00,
0X00,0X40,0X30,0X01,0XFF,0XFF,0XF3,0X93,0X26,0X1F,0XFF,0XFE,0X00,0X18,0X18,0X00,
0X00,0X30,0X20,0X40,0XFF,0XFF,0XF3,0XD3,0X27,0X9F,0XFF,0XF8,0X18,0X00,0X20,0X00,
0X00,0X18,0X00,0X40,0X3F,0XFF,0XFB,0XE7,0X8E,0X7F,0XFF,0XC0,0X06,0X00,0XC0,0X00,
0X00,0X04,0X04,0X80,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X01,0X01,0X80,0X00,
0X00,0X03,0X01,0X81,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0XE0,0X06,0X00,0X00,
0X00,0X00,0XC0,0X06,0X80,0X0F,0XFF,0XFF,0XFF,0XFF,0X00,0X10,0X10,0X0C,0X00,0X00,
0X00,0X00,0X30,0X08,0X80,0X00,0X3F,0XFF,0XFF,0XE0,0X00,0X48,0X40,0X30,0X00,0X00,
0X00,0X00,0X0C,0X03,0X06,0X00,0X00,0X00,0X00,0X00,0X04,0X36,0X00,0XC0,0X00,0X00,
0X00,0X00,0X03,0X00,0X04,0X18,0X00,0X00,0X00,0X02,0X30,0X18,0X03,0X00,0X00,0X00,
0X00,0X00,0X00,0XC0,0X0C,0X0A,0X01,0X00,0X03,0X18,0X19,0X00,0X18,0X00,0X00,0X00,
0X00,0X00,0X00,0X18,0X00,0X0C,0X01,0X01,0XA1,0X04,0X0C,0X00,0XE0,0X00,0X00,0X00,
0X00,0X00,0X00,0X07,0X00,0X04,0X01,0X20,0XE1,0X02,0X00,0X03,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0XE0,0X00,0X01,0X02,0X21,0X80,0X00,0X3C,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X1E,0X00,0X00,0X00,0X00,0X00,0X03,0XC0,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0XF8,0X00,0X00,0X00,0X00,0XF8,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X03,0XFC,0X00,0X01,0XFE,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00
};
void setup()
{
/* 初始化WIFI通讯波特率为9600 */
Serial.begin(9600);
display.begin(SSD1306_SWITCHCAPVCC, 0x3c); // initialize with the I2C addr 0x3D (for the 128x64)
}
void loop()
{
display.clearDisplay(); // 清屏
display.setTextSize(3); //字体尺寸大小2
display.setTextColor(WHITE);//字体颜色为白色
display.setCursor(0, 16); //把光标定位在第0行,第0列
display.print(F("JIANG JIE"));//显示字符
display.display();//显示
delay(5000); //延时两秒
display.clearDisplay(); // 清屏
display.setTextSize(2); //字体尺寸大小2
display.setTextColor(WHITE);//字体颜色为白色
display.setCursor(0, 0); //把光标定位在第0行,第0列
display.print(F("HanDan College"));//显示字符 加上F()表示写入flash里,不占全局变量
display.setCursor(0, 16); //把光标定位在第0行,第0列
display.print("2024-05-24");//显示时间年月日
display.setCursor(0, 32); //把光标定位在第32行,第0列
display.print(F("2021-01-28 ")); //显示时间时分秒
display.setCursor(0, 48); //把光标定位在第48行,第0列
display.print(F(" Welcome!")); //显示字符
display.display();//显示
delay(5000); //延时10秒
display.clearDisplay(); // 清屏
display.setTextSize(1); //字体尺寸大小2
display.setTextColor(WHITE);//字体颜色为白色
display.setCursor(0, 0); //把光标定位在第0行,第0列
//display.print(*show1);//显示字符
//LCDA.DisplayString(0,2,show1,AR_SIZE(show1));//第一行第一格开始,显示"邯郸学院"
//display.drawBitmap(0, 0, str_1, 16, 16, 1); //在坐标X:26 Y:16的位置显示中文字符姜
//display.drawBitmap(16, 0, str_2, 16, 16, 1); //在坐标X:42 Y:16的位置显示中文字符敏
//display.drawBitmap(32, 0, str_3, 16, 16, 1);
//display.drawBitmap(74, 32, str_4, 16, 16, 1);
//display.drawBitmap(90, 32, str_5, 16, 16, 1);
display.display();//显示
delay(2000); //延时10秒
display.clearDisplay(); // 清屏
display.setTextSize(1); //字体尺寸大小2
display.setTextColor(WHITE);//字体颜色为白色
display.setCursor(0, 0); //把光标定位在第0行,第0列
display.drawBitmap(0, 0, logo, 128, 63, 1);
display.display();//显示
delay(2000); //延时10秒
}
//温湿度显示
#include <LiquidCrystal.h>
#include <dht11.h>
#define DHT11PIN 8
dht11 DHT11;
float interchk;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
pinMode(DHT11PIN, OUTPUT);
lcd.begin(16,2);
}
void loop()
{
interchk = DHT11.read(DHT11PIN);
lcd.setCursor(0, 0);
lcd.print("Temp:");
lcd.print((float)DHT11.temperature, 2);
lcd.print("C");
lcd.setCursor(0,1);
//print the number of seconds since reset:
lcd.print("Hum:");
lcd.print((float)DHT11.humidity,2);
lcd.print("%");
delay(200);
}
//超声波测距
#include<LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
//创建 4 线制液晶显示实例,RS-12;E-11;5-D4;4-D5;3-D6;2-D7
// 设定 SR04 连接的 Arduino 引脚
#define Trig 6 //引脚 Tring 连接 IO D6
#define Echo 7 //引脚 Echo 连接 IO D7
float distance;//距离变量
float temp;
void setup()
{
// 初始化串口通信及连接 SR04 的引脚
// // Serial.begin(9600);
pinMode(Trig, OUTPUT);
// 要检测引脚上输入的脉冲宽度,需要先设置为输入状态
pinMode(Echo, INPUT);
lcd.begin(16, 2); //制定显示屏的尺寸(16 列,2 行)
}
void loop()
{
// 产生一个 10us 的高脉冲去触发 TrigPin
digitalWrite(Trig, LOW);//给 Trig 发送一个低电平
delayMicroseconds(2);//等待 2 微秒
digitalWrite(Trig, HIGH);//给 Trig 发送一个高电平
delayMicroseconds(10);//等待 10 微秒
digitalWrite(Trig, LOW);//给 Trig 发送一个低电平
// 检测脉冲宽度,并计算出距离
temp = float(pulseIn(Echo, HIGH)); //存储回波等待时间,
//pulseIn 函数会等待引脚变为 HIGH,开始计算时间,再等待变为 LOW 并停止计时
//返回脉冲的长度
//声速是:340m/s 换算成 34000cm / 1000000μs => 34 / 1000
//因为发送到接收,实际是相同距离走了 2 回,所以要除以 2
//距离(厘米) = (回波时间 * (34 / 1000)) / 2
//简化后的计算公式为 (回波时间 * 17)/ 1000
distance = (temp * 17) / 1000;//把回波时间换算成 cm
lcd.setCursor(4, 0);//将光标放在第一行第 5 个位置
lcd.print("distance:");//显示字符"distance"
lcd.setCursor(5, 1);//将光标放在第二行第 6 个位置
lcd.print(distance);//显示数据 distance
lcd.print("cm");
delay(1000);//延迟 1000ms
lcd.clear();
}
//光照检测器
#include<LiquidCrystal.h>
const int sensorPin = A0;
const int LED = 13;//设施LED灯管脚
float sensorValue;//定义读取光敏电阻两端的电压值
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
//创建4线制液晶显示
void setup()
{
lcd.begin(16, 2);//初始化LED灯
delay(1000);//延时1000ms
Serial.begin(9600);
pinMode(LED, OUTPUT);//初始化LED数字端口
pinMode(sensorPin, INPUT);//初始化传感器读取模拟口
}
void loop()
{
sensorValue = analogRead(sensorPin) * 0.07;//读取光敏电阻两端值。为1024*(0.8/(10+0.8))V
if (sensorValue >= 60)//定值电阻为10K,资料显示光敏电阻值为 50 - 100K 之间
{
digitalWrite(LED, HIGH);//外界光弱则LED亮
}
else
{
digitalWrite(LED, LOW);//外界光强则LED灭
}
lcd.setCursor(1, 0);//将光标放在第一行第2个位置
lcd.print("light intensity:");//“显示light intensity:”
lcd.setCursor(5, 1);//将光标放在第二行第6个位置
lcd.print(sensorValue);//“显示数据sensorValue”
Serial.println(sensorValue, DEC);//串口显示光强度电压值
delay(1000);//延迟1000ms
lcd.clear();
}
//声控灯
const int sensorPin = A0;
const int LED = 2;//设置 LED 灯管脚
int sensorValue; //定义读取声音传感器两端的电压值
// initialize the library with the numbers of the interface pins
void setup()
{
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(LED, OUTPUT);//初始化 LED 数字端口
pinMode(sensorPin, INPUT); //初始化传感器读取模拟口
}
void loop()
{
// put your main code here, to run repeatedly:
sensorValue = analogRead(sensorPin);// 读取声音传感器传感器两端值
if (sensorValue >= 600) //声音传感器电压值为 0-1024 之间
{
digitalWrite(LED, HIGH); //外界光弱则 LED 亮
}
else
{
digitalWrite(LED, LOW);//外界光强则 LED 灭
}
Serial.println(sensorValue, DEC);//串口显示声音传感器电压值
delay(1000);
}
//红外发射和接收
//1.串口和1602显示屏获取遥控器各按键的编码值
#include <LiquidCrystal.h>
#include <IRremote.h>
LiquidCrystal lcd(13, 12, 5, 4, 3, 2);//设置接口
int RECV_PIN = 11; // 红外一体化接收头连接到 Arduino 11 号引脚
IRrecv irrecv(RECV_PIN);//引用红外发射接收库函数
decode_results results; // 用于存储编码结果的对象
void setup()
{
Serial.begin(9600); // 初始化串口通信
irrecv.enableIRIn(); // 初始化红外解码
lcd.begin(16, 2); //初始化 LCD
delay(1000); //延时 1000ms
}
void loop()
{
lcd.clear(); //清屏
if (irrecv.decode(&results)) //有数据接收到
{
Serial.println(results.value, HEX);//以 16 进制串口显示接收代码
lcd.setCursor(0,0);
lcd.print(results.value, HEX);//以 16 进制 1602 显示接收代码
irrecv.resume(); // 接收下一个编码
}
delay(5000);
}
//2.红外遥控器控制LED灯开关
#include<LiquidCrystal.h>
#include <IRremote.h>
int RECV_PIN = 11; // 红外一体化接收头连接到 Arduino 11 号引脚
int LEDpin = 13; //定义 LED 输出引脚
IRrecv irrecv(RECV_PIN);
decode_results results; // 用于存储编码结果的对象
void setup()
{
pinMode(LEDpin, OUTPUT);
irrecv.enableIRIn(); // 初始化红外解码
}
void loop()
{
if (irrecv.decode(&results))
{
Serial.println(results.value);
if (results.value == 0xFFA25D) //若接收到按键 ON 按下的指令,打开 LED
{
digitalWrite(LEDpin, HIGH);
}
else if (results.value == 0xFFE21D) //接收到 OFF 按键按下的命令,关闭 LED
{
digitalWrite(LEDpin, LOW);
}
irrecv.resume(); // 接收下一个编码
}
}
Arduino 14个项目
最新推荐文章于 2024-09-14 07:43:16 发布