概述
面包板
1.点击范例—>basics–>blink
setup是初始化, loop是不停做这个操作
void setup(){
pinMode(13,OUTPUT) //13脚(灯)用来输出
}
void loop(){
digitalWrite(13,HIGH);
delay(1000);//延迟一秒
digitalWrite(13,LOW);
delay(1000); //看到版上暗一秒亮一秒
}
//按上面向右按钮烧录到
2.需要的材料
面包板(让线看起来不那么麻烦) 1k欧姆以下 老师使用的是250欧姆
杜邦线
2个led灯
void setup(){
pinMode(12,OUTPUT); //打开12脚(灯)用来输出
pinMode(11,OUTPUT);
}
void loop(){
digitalWrite(12,HIGH);
digitalWrite(11,LOW);
delay(1000);//延迟一秒
digitalWrite(12,LOW);
digitalWrite(11,HIGH);
delay(1000); //看到版上暗一秒亮一秒
}
//解释面包板
第一行是 ----------全部连接
中间是| 横着的全部连接
//怎么接led灯,加电阻(是电阻很小,电流太大,容易烧掉),如图
//开发板gnd接一行,标数字的都是正级
//led灯紧紧连接电阻,返回gnd行
//gnd是负极
2.按钮
//板上写5v,与gnd连接,要加电阻,不然烧坏,需要10k欧姆电阻,把电压变0v
//加上按钮,需要接加一条线到开发板探测电压变化
//控制5v的接口, //7号探测 //按钮可以动态当接线 范例—>digital–>button
//
int btnState=0;
void setup(){
pinMode(13,OUTPUT); //打开12脚(灯)用来输出
pinMode(7,INPUT); //input就是探测器
}
void loop(){
btnState=digitalRead(7);//读7号位状态
if(btnState == HIGH){
digitalWrite(13,HIGH);
}else{
digitalWrite(13,LOW);
}
}
3.序列号输出(看例子 DigitalReadSerial)
int buttonState=0;
int beforeState=0;
int presstime=0;
void setup(){
Serial.begin(9600);// 与电脑连接的速度
pinMode(7,INPUT);
}
void loop(){
buttonState=digitalRead(7); //返回0和1
if(buttonState ==1 and beforeState ==0){
presstime=presstime+1;
Serial.print("xxx");//输出到电脑屏幕,自动弹出来
Serial.println(presstime);
}
if(buttonState!=beforeState){
delay(50); //可以解决debounce的问题
}
beforeState=buttonState;
}
4.debounce(弹下) 按钮因为有弹性,导致几秒会电压变化大(元件的问题),如上代码解决
//加上if判断与之前的状态,自行调整debounce的时间(50ms比较保险,不同按钮时间不同)
5.类比讯号输入(就是探测)(需要可变电阻,电位器)
如图4
//在uno A开头是 监听变化电压讯号
//板上 ~开头的是什么? 监听讯号变化
//电位器的大小是0-1023,我不要这个范围怎么办
int sensor=A0;
int sensorRead=0;
int newdata=0;
void setup(){
Serial.begin(9600);// 与电脑连接的速度
pinMode(6,OUTPUT);// !!!代表打开这个 接口,不要写成INPUT,写的时候才搞
}
void loop(){
sensorRead=analogRead(sensor);
newdata=map(sensorRead,0,1023,0,255);//电位器的大小是0-1023,我不要这个范围怎么办改成0-255,因为定义255是最亮的
Serial.println(newdata);
analogWrite(6,newdata);
delay(200);
}
6.伺服电机SG-90(3条线,5v可以转到特定的角度)与直流马达(2条,纯转动)的区别
//红色是正极 棕线是负极 橘子线是讯号线
//红色解5v 棕gnd ,橘线~9讯号线,reset,IOREF也是5v,也可以用面包板接
//代码,在案例的Knob
![在这里插入图片描述](https://img-blog.csdnimg.cn/f11b5be946164e0ca8a200dd0a3ba3e8.png
#include <Servo.h> //导入相关库才可以用私服马达
myservo.attach(9);//使用的控制脚位
myservo.write(90);//转90度,最大0-180度
delay(15);
#include <Servo.h>
Servo myservo; // create servo object to control a servo
int sensor=0;
int angle=0;
void setup() {
myservo.attach(9);
}
void loop() {
sensor=analogRead(A0);
angle =map(sensor,0,1023,0,180);
myservo.write(angle);
delay(15);
delay(15);
}
7.伺服马达(3条线,转到指定角度)与步进马达(转过指定角度,可以转一圈,4-6条线)的区别
如图5,由内部4个线圈, 接gnd中间磁铁就会移动到指定位置
左边高电平,右边会接地 ,只需要注意左最下是gnd
//电源arn提供不了需要,外接电源
//不影响adn,把adn的gnd接电池负极
int apin=8;
int bpin=8;
int cpin=8;
int dpin=8;
void setup(){
pinMode(apin,OUTPUT);
pinMode(bpin,OUTPUT);
pinMode(cpin,OUTPUT);
pinMode(dpin,OUTPUT);
}
void loop(){
digitalWrite(dpin,LOW);
digitalWrite(apin,HIGH);
delay(10);
digitalWrite(apin,LOW);
digitalWrite(bpin,HIGH);
delay(10);
digitalWrite(bpin,LOW);
digitalWrite(cpin,HIGH);
delay(10);
digitalWrite(cpin,LOW);
digitalWrite(dpin,HIGH);
}
8.wifi连接
file -->preferences addition boards manager urls :
http://arduino.esp8266.com/stable/package_esp8266com_index.json
toos-->board mananger-->搜索esp8266安装
9.红外线传感器
请添加图片描述
1. https://github.com/Arduino-IRremote/Arduino-IRremote
下载压缩包 adn里面 的sketch include lib加入
#include <IRremote.h>
int RECV_PIN=8;
int LIGHT=A2;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup(){
Serial.begin(9600);
Serial.println("aaa");
irrecv.enableIRIn();//启用红外线接收器
pinMode(LIGHT,OUTPUT);
}
void loop(){
if(irrecv.decode(&results)){
Serial.println(results.value);
if(results.value=4294967295){
digitalWrite(LIGHT,!digitalRead(LIGHT));
}
irrecv.resume();
}
delay(100);
}
10.attiny85 当烧录机
tools-->添加管理员-->添加url
//reset接电容 10uF 到adn 长端接reset 短的接gnd
工具--->烧录器avr改为 adn as ISP
图adn13
11.8*8矩阵 可以控制64个灯
图adn14 15
10.大平台(可以扩展多个adn接口)
11.控制多个灯
attiny45
12.10*10矩阵灯
最后
以上就是年轻月光为你收集整理的1.arduino单片机入门的全部内容,希望文章能够帮你解决1.arduino单片机入门所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复