Arduino基础课程

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课后任务
发挥想象制作一个流 水灯
第六课 模拟输入
• analogRead(引脚或变量名); [0,1023] 本指令用于从 Arduino的模拟输入引脚读取数 值。 Arduino可以将0-5V的电压输入信号映 射到数值0-1023。 换句话说,我们可以将5V等分成1024份。0V 的输入信号对应着数值0,而5V的输入信号对 应着1023。
模式:OUTPUT 输出模式,为电路提供激励
INPUT 输入模式,读取传感器信号或开关信号
笔记
• 模式常量 HIGH、LOW (高电平、低电平) 输出模式:HIGH=5V、LOW=0V 输入模式:HIGH>=3V、LOW<=2V
• digitalWrite(引脚或变量名,模式常量); 将数字引脚输出高低电平
digitalWrite(led2, HIGH);
}
}
void ledmie(){
//灯全灭
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
}
2路抢答器
int g1=13; int y1=12; int r1=11; int g2=10; int y2=9; int r2=8; void setup() { pinMode(g1, OUTPUT); pinMode(y1, OUTPUT); pinMode(r1, OUTPUT); pinMode(g2, OUTPUT); pinMode(y2, OUTPUT); pinMode(r2, OUTPUT); } void loop() { digitalWrite(g1, HIGH); delay(5000); digitalWrite(g1, LOW); digitalWrite(y1, HIGH); delay(1000); digitalWrite(y1, LOW); digitalWrite(r1, HIGH); delay(5000); digitalWrite(r1, LOW); }
作业:查阅相关资料,弄清楚什么是上拉电阻,下拉电阻
第二种方案
程序
void setup() { pinMode(2, INPUT_PULLUP); pinMode(13, OUTPUT); } void loop() { int kaiguan=digitalRead(2); if (kaiguan==HIGH) { digitalWrite(13, LOW); } else { digitalWrite(13, HIGH); } }
input
arduino output
Arduino IDE ardublock
认识 Arduino IDE
• Arduino官网 • Arduino IDE下载安装 • CH340驱动
第二课
• 认识fritzing,认识面包板 • 理解数字输出 • Blink——会闪烁的LED • 学会IDE • 学会ardublock
//重置
int led1=13; //灯1
int led2=12; //灯2
void setup() {
pinMode(kg1, INPUT_PULLUP);
pinMode(kg2, INPUT_PULT_PULLUP)
pinMode(led1, OUTPUT);
delay(500); while(digitalRead(2)==HIGH){ digitalWrite(13, HIGH); } } else { digitalWrite(13, LOW); } } }
台灯原理
int kg1=3; //开关1
int kg2=2; //开关2
int cz=4;
2019年春季学期电子 协会arduino教学
8节课带你arduino入门 讲述人:代云凯
第一课 认识Arduino UNO
~
pwm
模拟输出 [0,255]
TX 发 RX收 串口输入输出 [0,255]
数字输入输出 【高低电平】
模拟输入 [0,1023]
输出输入
高低电平 [0,1023]
高低电平 [0,255]
示例程序
在本示例中,我们将电位器 的三个引脚分别连接在 5V, GND,以及A0引脚。通过 调节电位器,A0引脚的输入 电压将在0V-5V之间。 在 Arduino内置的模拟数字转 换功能作用下,该输入电压 将被映射到数值0-1023之间。 (0V对应数值0,5V对应 1023)。这一数值将通过串 口监视器显示。
• 逻辑运算符 = == != < > <= >=
第一种方案
程序
void setup() { pinMode(2, INPUT); pinMode(13, OUTPUT); digitalWrite(2, HIGH); } void loop() { int kaiguan=digitalRead(2); if (kaiguan==LOW) { digitalWrite(13, HIGH); } else { digitalWrite(13, LOW); } }
电路连接
arduino程序结构
主程序 void setup() { // 初始化函数,只执行一次 //声明所有串行端口及脚位输出入 } void loop() { // 循环函数,无限次执行 }
第一个程序
• 笔记: 1. /*段注释
不执行*/ 2.//行注释,不执行 3.{ 函数体 }
笔记
• pinMode函数 常用于setup函数中,定义引脚模式 语句结构:pinMode(pin,模式);
笔记
• delay(毫秒); 延时函数,1秒=1000毫秒
笔记
• 全局变量 声明 //在setup函数之前,进行常量声明,变量声 明 • int(整数型) 用法:常量声明:int空格变量名=数值
变量类型定义: int空格变量名 定义某变量类型或赋值
• 开关 按键开关 倾斜开关 震动开关
第三课
相连不同侧,同侧不相连
}
while循环
• while(条件){ 执行语句; } //条件成立,执行,不成立跳出
当型(while)是先检验条件再运行。 直到型(do while)是先运行一次循环体,检测 到某个某个条件成立时接着循环。 也就是while型可能不运行循环体,而直到至少 运行一次。
示例
void setup() { Serial.begin(9600); } void loop() { int i=1, sum=0; while(i<=100){
if函数
• 如果(条件成立){就-----------} 否则{就----------}
• if(判断语句){ 要执行的语句;
} else{
要执行的语句; }
数字输入digitalRead
• 理解数字输入 • digitalRead(引脚); 读取数字脚高低电平状态 高电平用1表示,低电平用0表示
交通灯
第五课 模拟输出
• PWM(Pulse Width Modulation): 脉冲宽度调制
调节脉冲宽度 及占空比,近 似视为模拟信 号
• analogWrite(引脚或变量名,PWM);
将模拟引脚输出PWM。
• 对于arduino模拟输出只能输出[0,255]的 PWM
• analogWrite()函数仅支持以下引脚 3,5,6,9,10,11
//灯1亮
while(digitalRead(cx)==HIGH){
digitalWrite(led1, HIGH);
digitalWrite(led2, LOW);
}
}
void led2liang(){
//灯2亮
while(digitalRead(cx)==HIGH){
digitalWrite(led1, LOW);
第四课 串行通信
• Serial
Serial.begin(电脑波特率); // 用于setup函数,与电脑建立连接。 Serial.print(要打印的值); Serial.println(要打印的值+回车); //将内容打印到电脑屏幕。 Serial.read(无);//读取一个字节 Serial.available(无) //识别串口可读取字节数
示例程序
int data = 0; void setup() {
Serial.begin(9600); } void loop() {
if (Serial.available() > 0) { data = Serial.read(); Serial.print(data); Serial.println(data); }
sum=sum+i; i++;
示例程序
int led = 9; void setup() { } void loop() { for (int i = 0 ; i <= 255; i += 5) {i
analogWrite(led, i ); delay(30); } for (int i = 255 ; i >= 0; i -= 5) { analogWrite(led, i); delay(30); } }
sum+=i; i++; } Serial.print ("sum = "); Serial.println (sum); delay (5000);
台灯原理 交通灯 2路抢答器
课堂任务
• 函数的嵌套 • 自定义函数
void setup() { pinMode(2, INPUT_PULLUP); pinMode(13, OUTPUT); } void loop() { int kaiguan=digitalRead(2); if (kaiguan==LOW) { delay(500); while(digitalRead(2)==HIGH){ digitalWrite(13, LOW); } if (kaiguan==LOW) {
第三个模式
• INPUT_PULLUP 输入上拉模式
Arduino微控制器自带内部上拉电阻。如果你需要使用该内 部上拉电阻,可以通过 pinMode()将引脚设置为输入上拉 ( INPUT_ PULLUP)模式。
注意:当 Arduino引脚设置为输入( INPUT)模式或者输入上 拉( INPUT_ PULLUP)模式,请勿将该引脚与负压或者高于 5V的电压相连,否则可能会损坏 Arduino控制器。
• 在调用analogWrite()函数前,您无需用 pinMode()函数来设置该引脚
for循环
• for (初始值; 判断条件;对初始值操作) {
要执行的语句;
}
• int i=1, sum=0;
for( i=1; i<=100; i++){ sum=sum+i;
}
int i=1, sum=0; while(i<=100){
• map(x,a,A,b,B); • map(要映射的值,映射前区间最小值,映射前
void setup() { } void loop(){ int val = analogRead(0); val = map(val, 0, 1023, 0, 255); analogWrite(9, val); }
将变量val数值从 0 - 1023 区间映射到 0 - 255区间
• map()可以用来将某一数值从一个区间等比 映射到一个新的区间。
程序
int val = 0; void setup(){ Serial.begin(9600); } void loop(){ val = analogRead(A0); Serial.println(val); delay(200); }
台灯原理
1023/255约等于4.01
int val = 0; int led = 9; void setup() { } void loop() { val = analogRead(A0); analogWrite(led, val/4 ); }
pinMode(led2, OUTPUT);
}
void loop() {
if(digitalRead(kg1)==HIGH)
led1liang();
if(digitalRead(kg2)==HIGH)
led2liang();
if(digitalRead(cx)==HIGH)
led1mie();
}
void led1liang(){
相关文档
最新文档