arduino基础代码学习
按钮按下灯亮,松开灯灭,连接gnd和2号引脚,
/*
Input Pull-up Serial
This example demonstrates the use of pinMode(INPUT_PULLUP). It reads a digital
input on pin 2 and prints the results to the Serial Monitor.
The circuit:
- momentary switch attached from pin 2 to ground
- built-in LED on pin 13
Unlike pinMode(INPUT), there is no pull-down resistor necessary. An internal
20K-ohm resistor is pulled to 5V. This configuration causes the input to read
HIGH when the switch is open, and LOW when it is closed.
created 14 Mar 2012
by Scott Fitzgerald
This example code is in the public domain.
http://www.arduino.cc/en/Tutorial/InputPullupSerial
*/
void setup() {
//start serial connection
Serial.begin(9600);
//configure pin 2 as an input and enable the internal pull-up resistor
pinMode(2, INPUT_PULLUP);
pinMode(13, OUTPUT);
}
void loop() {
//read the pushbutton value into a variable
int sensorVal = digitalRead(2);
//print out the value of the pushbutton
Serial.println(sensorVal);
// Keep in mind the pull-up means the pushbutton's logic is inverted. It goes
// HIGH when it's open, and LOW when it's pressed. Turn on pin 13 when the
// button's pressed, and off when it's not:
if (sensorVal == HIGH) {
digitalWrite(13, LOW);
} else {
digitalWrite(13, HIGH);
}
}
两个开关都按下亮,按其中一个不亮,
/*
Input Pull-up Serial
This example demonstrates the use of pinMode(INPUT_PULLUP). It reads a digital
input on pin 2 and prints the results to the Serial Monitor.
The circuit:
- momentary switch attached from pin 2 to ground
- built-in LED on pin 13
Unlike pinMode(INPUT), there is no pull-down resistor necessary. An internal
20K-ohm resistor is pulled to 5V. This configuration causes the input to read
HIGH when the switch is open, and LOW when it is closed.
created 14 Mar 2012
by Scott Fitzgerald
This example code is in the public domain.
http://www.arduino.cc/en/Tutorial/InputPullupSerial
*/
void setup() {
//start serial connection
Serial.begin(9600);
//configure pin 2 as an input and enable the internal pull-up resistor
pinMode(2, INPUT_PULLUP);
pinMode(8, INPUT_PULLUP);
pinMode(13, OUTPUT);
}
void loop() {
//read the pushbutton value into a variable
int sensorVal = digitalRead(2);
int sensorVal2 = digitalRead(8);
//print out the value of the pushbutton
Serial.println(sensorVal);
Serial.println(sensorVal2);
// Keep in mind the pull-up means the pushbutton's logic is inverted. It goes
// HIGH when it's open, and LOW when it's pressed. Turn on pin 13 when the
// button's pressed, and off when it's not:
if (sensorVal == LOW && sensorVal2 == LOW) {
digitalWrite(13, HIGH);
} else {
digitalWrite(13, LOW);
}
}
材料,
面包板跳线*10
电阻:200-500欧姆
数码管:0.56寸共阴5161AS
小按键开关
面包板
arduino开发板
1.每次按键随机出现
/*
19 MC猜数字 - 1 电路搭建
太极创客
www.taichi-maker.com
此程序用于太极创客<<零基础入门学用Arduino教程>>中
MC猜数字电路测试使用。
2017-04-21
*/
void setup() {
pinMode(2, INPUT_PULLUP);
Serial.begin(9600);
for (int i = 2; i <= 9; i++) {
pinMode(i, OUTPUT);
}
randomSeed(analogRead(A0)); //随机数种子
}
// the loop function runs over and over again forever
void loop() {
if(!digitalRead(2))
{
int num = random(0,10);
displayNumber(num);
Serial.print(num);
delay(1000);
displayClear();
}
}
void displayClear(){
// 清理显示内容
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
}
void displayNumber(int number){
switch(number){
case 1:
digitalWrite(4, HIGH);
digitalWrite(7, HIGH);
break;
case 2:
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
break;
case 3:
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
break;
case 4:
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
break;
case 5:
digitalWrite(3, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
break;
case 6:
digitalWrite(3, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
break;
case 7:
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(7, HIGH);
break;
case 8:
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
break;
case 9:
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
break;
case 0:
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
break;
default:
digitalWrite(5, HIGH);
}
}
2.从0-9依次亮
/*
19 MC猜数字 - 1 电路搭建
太极创客
www.taichi-maker.com
此程序用于太极创客<<零基础入门学用Arduino教程>>中
MC猜数字电路测试使用。
2017-04-21
*/
void setup() {
pinMode(2, INPUT_PULLUP);
for (int i = 2; i <= 9; i++) {
pinMode(i, OUTPUT);
}
}
// the loop function runs over and over again forever
void loop() {
int myNumber = 0;
while(myNumber <= 9){
displayNumber(myNumber);
delay(500);
displayClear();
myNumber++;
while(!digitalRead(2)){
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
}
delay(500);
}
}
void displayClear(){
// 清理显示内容
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
}
void displayNumber(int number){
switch(number){
case 1:
digitalWrite(4, HIGH);
digitalWrite(7, HIGH);
break;
case 2:
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
break;
case 3:
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
break;
case 4:
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
break;
case 5:
digitalWrite(3, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
break;
case 6:
digitalWrite(3, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
break;
case 7:
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(7, HIGH);
break;
case 8:
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
break;
case 9:
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
break;
case 0:
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
break;
default:
digitalWrite(5, HIGH);
}
}
随机生成0-9随机数
void setup() {
randomSeed(analogRead(A0)); //随机数种子,不让随机一样
}
int myNumber = 0;
myNumber = random(0,10);
randomSeed函数可用来产生随机种子。单独使用 random()函数所产生的随机数,在每一次程序重新启动后,总是重复同一组随机数字。如果希望程序重新启动后产生的随机数值与上一次程序运行时的随机数不同,则需要使用
randomSeed函数
在实际应用时,可以通过调用 analogRead函数读取一个空引脚,作为随机种子数值。具体操作,本页面后续示例程序将进行说明
语法
randonSeed(seedVal)
void setup() {
Serial.begin(9600);
}
Serial.println(num); //每次换行输出,定义Serial.begin(9600)才会输出
Serial.println(num); //每次不换行输出
4.analogWrite
说明
将一个模拟数值写进Arduino引脚。这个操作可以用来控制LED的亮度, 或者控制电机的转速. Arduino每一次对引脚执行analogWrite()指令,都会给该引脚一个固定频率的PWM信号。PWM信号的频率大约为490Hz.
在Arduino UNO控制器中,5号引脚和6号引脚的PWM频率为980Hz。在一些基于ATmega168和ATmega328的Arduino控制器中,analogWrite()函数支持以下引脚: 3, 5, 6, 9, 10, 11。
在Arduino Mega控制其中,该函数支持引脚 2 – 13 和 44 – 46。使用ATmega8的Arduino控制器中,该函数只支持引脚 9, 10, 11.
在调用analogWrite()函数前,您无需使用pinMode()函数来设置该引脚。
语法
analogWrite(pin, value)
参数
pin
:被读取的模拟引脚号码
value
:0到255之间的PWM频率值, 0对应off, 255对应on
返回值
无
示例程序
在本示例中,我们将10K电位器的三个引脚分别连接在5V, GND, 以及A0引脚。通过调节电位器, A0引脚的输入电压将在0V-5V之间。在Arduino内置的数模转换功能作用下,该输入电压将被映射到数值0-1023之间。我们将这一数值除以4从而得到0-255之间的数字。这一数字将被用于调整引脚3上LED的亮度。
连接说明
将10K电位器的三个引脚分别连接在5V, GND, 以及A0引脚
引脚3连接LED正极,LED负极连接150欧姆电阻一端,电阻另外一段连接Arduino的GND引脚。
analogWrite()示例程序
/*
analogWrite()示例程序
v1.0
Created 2016
by 太极创客
www.taichi-maker.com
说明:
本程序旨在演示如何使用analogWrite()
程序将A0引脚所读取到的数值转换为 0-255之间的数值,
并通过这一数值控制引脚3的LED亮度。
获得具体连接电路图,请参阅太极创客网站。
This example code is in the public domain.
*/
// 引脚3连接LED
int ledPin = 3;
//变量val用来存储模拟输入信号
int val = 0;
void setup()
{
// 将连接LED的引脚设置为输出模式
pinMode(ledPin, OUTPUT);
}
void loop()
{
//读取引脚A0的输入信号,并将该数值赋给变量val
val = analogRead(A0);
// 将引脚A0读取的数值转换为0-255之间
// 并将该数值写入引脚3
analogWrite(ledPin, val / 4);
}
5.analogRead()
说明
本指令用于从Arduino的模拟输入引脚读取数值。Arduino控制器有多个10位数模转换通道。这意味着Arduino可以将0-5伏特的电压输入信号映射到数值0-1023。
换句话说,我们可以将5伏特等分成1024份。0伏特的输入信号对应着数值0,而5伏特的输入信号对应着1023。
例:
当模拟输入引脚的输入电压为2.5伏特的时候,该引脚的数值为512。
(2.5伏特 / 5伏特 = 0.5, 1024 X 0.5 ?=512)
引脚的输入范围以及解析度可以使用analogReference()指令进行调整。
Arduino控制器读取一次模拟输入需要消耗100微秒的时间(0.0001秒)。控制器读取模拟输入的最大频率是每秒10,000次。
注意:在模拟输入引脚没有任何连接的情况下,用analogRead()指令读取该引脚,这时获得的返回值为不固定的数值。这个数值可能受到多种因素影响,如将手靠近引脚也可能使得该返回值产生变化。
语法
analogRead(pin)
参数
pin
:被读取的模拟引脚号码
返回值
0到1023之间的值
示例程序
在本示例中,我们将电位器的三个引脚分别连接在5V, GND, 以及A0引脚。通过调节电位器, A0引脚的输入电压将在0V-5V之间。在Arduino内置的模拟数字转换功能作用下,该输入电压将被映射到数值0-1023之间。
(0V对应数值0, 5V对应1023)。这一数值将通过串口监视器显示。
void setup() {
// put your setup code here, to run once:
//串口通讯初始化
Serial.begin(9600);
pinMode(0, OUTPUT);//将9号引脚为输出模式
}
void loop() {
// put your main code here, to run repeatedly:
//读取模拟输入值
int analogInoutVal = analogRead(A0);
int brightness = map(analogInoutVal, 0, 1023,0,255);//将模拟输入值(0-1023)等映射带模拟输出数值区间(0-255)
analogWrite(9, brightness);
//建结果通过串口监视器显示
Serial.println(analogInoutVal);
}
本文作者: 永生
本文链接: https://yys.zone/detail/?id=170
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
评论列表 (0 条评论)