【Arduino笔记】N0.1

双色LED灯

//双色led交替闪烁
int redPin =10;
int greenPin =11;
int num;
void setup() 
{
  // put your setup code here, to run once:
  pinMode(redPin,OUTPUT);
  pinMode(greenPin,OUTPUT);
  Serial.begin(9600);
  
}

void loop() 
{
  // put your main code here, to run repeatedly:
  for(num =255;num>0;num--)
  {
     analogWrite(redPin,num);
     analogWrite(greenPin,255-num);
     Serial.println(num,DEC);
     delay(30);//30ms
     
  }
  for(int num =0;num<255;num++)
  {
    analogWrite(redPin,num);
     analogWrite(greenPin,255-num);
     Serial.println(num,DEC);
     delay(30);//30ms
  }
}

接线图
在这里插入图片描述
pinMode()
通过pinMode()函数,你可以将Arduino的引脚配置为以下三种模式:
1.输出(OUTPUT)模式
2.输入(INPUT)模式
3.输入上拉(INPUT_PULLUP)模式 (仅支持Arduino 1.0.1以后版本)
在输入上拉(INPUT_PULLUP)模式中,Arduino将开启引脚的内部上拉电阻,实现上拉输入功能。一旦将引脚设置为输入(INPUT)模式,Arduino内部上拉电阻将被禁用。

Serial.begin(speed)
串口波特率的设置:通常我们使用Serial.begin(speed)来完成串口的初始化,这种方式,只能配置串口的波特率。
使用Serial.begin(speed, config)可以配置数据位、校验位、停止位等。例如Serial.begin(9600,SERIAL_8E2)是将串口波特率设为9600,数据位8,偶校验,停止位2。
Serial.begin()官方详解

analogWrite()
将模拟值(PWM wave)写入引脚。可用于以不同的亮度点亮LED或以各种速度驱动电动机。调用之后analogWrite(),该引脚将生成指定占空比的稳定矩形波,直到同一引脚上的下一次调用analogWrite()(或调用digitalRead()或digitalWrite())为止。
analogWrite()官方详解

Serial.println(data)
从串行端口输出数据,跟随一个回车(ASCII 13, 或 ‘r’)和一个换行符(ASCII 10, 或 ‘n’)。
Serial.println()解释


RGB LED

//RGB LED 
int redPin =11;
int greenPin =10;
int bluePin =9;
void setup() 
{

  pinMode(redPin,OUTPUT);
  pinMode(greenPin,OUTPUT);
  pinMode(bluePin,OUTPUT);
  
}

void loop() 
{
   color(255,0,0);//red
   delay(1000);//1s
   color(0,255,0);//green
   delay(1000);
   color(0,0,255);//blue
   delay(1000);
   color(0,255,0); //red
   delay(1000);   
   color(255,0,0);//orange
   delay(1000); 
   color(0,128,255);//yellow
   delay(1000); 
   color(255,128,0);//green
   delay(1000); 
   color(255,0,128);//blue
   delay(1000); 
   color(128,0,255);
   delay(1000); 
   color(0,0,0);
   delay(1000); 
}
void color(unsigned char red,unsigned char green,unsigned char blue)
{
  analogWrite(redPin,red);
  analogWrite(bluePin,blue);
  analogWrite(greenPin,green);
}

在这里插入图片描述


继电器


const int relayPin =7; //the "s" of relay module attach to

void setup()
{
  pinMode(relayPin, OUTPUT); //initialize relay as an output
}

void loop()
{
  digitalWrite(relayPin, HIGH); //Close the relay
  delay(500); //wait for 1 second
  digitalWrite(relayPin, LOW); //disconnect the relay 
  delay(500); //wait for 1 second
}

SIG=IN,VCC=DC+,GND=DC-
SIG=IN,VCC=DC+,GND=DC-
在这里插入图片描述
继电器是一种用于响应施加的输入信号而在两个或设备之间提供连接设备。换句话说,继电器提供了控制器和设备之间的隔离,因为我们知道设备可以在AC和DC上工作。但是,他们从微控信号接收信号,因此我们需要一个继电器来弥补差距。当需要用小电信号控制大量电流或电压时,继电器非常有用。


激光 摩斯信号


#include "retrieval.h"

const int laserPin = 7; //laser attach to 

static int dotDelay = 200; //

void setup()
{
  pinMode(laserPin, OUTPUT);  //initialize laser as an output
  Serial.begin(9600);  
}

void loop()
{
  char ch = 0; //store the  character or digit read from the serial monitor
  if(Serial.available() > 0) //is there anything to be read
  {
    ch = Serial.read(); //read a single letter from serial monitor
  }
  morseSignal(ch); //flashes depend on the letter 
}
//
void flashDot(char cha)
{
  digitalWrite(laserPin, HIGH); //turn the laser on
  if(cha == '.') //
  {
    delay(dotDelay);
  }
  else
  {
    delay(dotDelay * 3);  //gap between letters
  }
  digitalWrite(laserPin, LOW);
  delay(dotDelay);  //gap between flashes
}
//
void flashSequence(char *sequence)
{
  int i = 0;
  while(sequence[i] != NULL)
  {
    flashDot(sequence[i]);
    i++;
  }
  delay(dotDelay * 3);
}
//
void morseSignal(char ch)
{
  if(ch >= 'a' && ch <= 'z')  
  {
    flashSequence(letters[ch - 'a']);
  }
  else if(ch >= 'A' && ch <= 'Z')
  {
    flashSequence(letters[ch - 'A']);
  }
  else if(ch >= '0' && ch <= '9')
  {
    flashSequence(numbers[ch - '0']);
  }
  else if(ch == ' ')
  {
    delay(dotDelay * 4);  //gap between words
  }
}


#ifndef __RETRIEVAL_H__
#define __RETRIEVAL_H__

char* letters[] = {
  ".-",  //A
  "-...",  //B
  "-.-.",  //C
  "-..",  //D
  ".",  //E
  "..-.",  //F
  "--.",  //G
  "....",  //H
  "..",  //I
  ".---",  //J
  "-.-",  //K
  ".-..",  //L
  "--",  //M
  "-.",  //N
  "---",  //O
  ".--.",  //P
  "--.-",  //Q
  ".-.",  //R
  "...",  //S
  "-",  //T
  "..-",  //U
  "...-",  //V
  ".--",  //W
  "-..-",  //X
  "-.--",  //Y
  "--.."  //Z
};
char* numbers[] = {
  "-----",  //0
  ".----",  //1
  "..---",  //2
  "...--",  //3
  "....-",  //4
  ".....",  //5
  "-....",  //6
  "--...",  //7
  "---..",  //8
  "----."   //9
};

#endif

在这里插入图片描述
打开串口监视器
在这里插入图片描述
输入字母发送莫斯密码
在这里插入图片描述
在这里插入图片描述
Serial.available();
获取可用于从串行端口读取的字节数(字符)。这是已经到达并存储在串行接收缓冲区(包含64个字节)中的数据。
Serial.available()从Stream实用程序类继承。
Serial.read()
读取传入的串行数据。


轻触开关


//Turns on and off a LED ,when pressings button attach to pin7
/**********************************/
const int keyPin = 7; //the number of the key pin
const int ledPin = 13;//the number of the led pin
/**********************************/
void setup()
{
  pinMode(keyPin,INPUT);//initialize the key pin as input 
  pinMode(ledPin,OUTPUT);//initialize the led pin as output
}
/**********************************/
void loop()
{
  
  boolean Value=digitalRead(keyPin);//read the state of the key value
  //and check if the kye is pressed
  //if it is,the state is HIGH 
  if(Value ==HIGH )
  {
    digitalWrite(ledPin,LOW);//turn on the led
  }
  else
  {
    digitalWrite(ledPin,HIGH);//turn off the led
  }
}
/************************************/

板子上的led连的是13I/O口,开关连接7口 按下开关leo获得高电平亮

在这里插入图片描述
在这里插入图片描述
digitalRead()
从指定的数字引脚(HIGH或LOW)读取值。
解释

digitalWrite()
将HIGH或LOW值写入数字引脚。
如果将引脚配置为OUTPUTwith pinMode(),则其电压将设置为相应的值:5V(在3.3V板上为3.3V)HIGH,0V(接地)LOW。
如果该引脚配置为INPUT,digitalWrite()将启用(HIGH)或禁用(LOW)输入引脚上的内部上拉电阻。建议将设置为pinMode(),INPUT_PULLUP以启用内部上拉电阻。有关更多信息,请参见“ 数字引脚”教程。
如果您未将设置pinMode()为OUTPUT,而是将LED连接到引脚,则在调用时digitalWrite(HIGH),LED可能会变暗。如果未明确设置pinMode(),digitalWrite()将启用内部上拉电阻,其作用类似于大限流电阻。
解释


发布了28 篇原创文章 · 获赞 3 · 访问量 896

猜你喜欢

转载自blog.csdn.net/wangpuqing1997/article/details/105046146