arduino学习笔记17.12.6

 

实验一   呼吸灯

int ledpin=13;

void setup() {

 

}

 

// the loop function runs overand over again forever

void loop() {

 for(int fadevalue=0;fadevalue<=255;fadevalue+=3)

      {

        analogWrite(ledpin,fadevalue);

        delay(20);

      }

 for(int fadevalue=255;fadevalue>=0;fadevalue-=3)

 {

      analogWrite(ledpin,fadevalue);

      delay(20);

 }

使用for循环来控制通过电平的高低来控制LED的亮暗

知识点:analogWrite(x,fadevalue)  fadevalue的变化范围0-255  x代表接口编号

           delay(x)延迟 使程序停顿xms(毫秒)

             loop是循环执行的代码区

 

实验二 RGBLED的点亮与色彩变换

 

int ledPin=13;

int redPin=12;

int greenPin=11;

int bluePin=10;

         

void setup() {

 pinMode(ledPin,OUTPUT);//13号针脚

 pinMode(redPin,OUTPUT);//12号针脚

 pinMode(greenPin,OUTPUT);//11号针脚

 pinMode(bluePin,OUTPUT);//10号针脚

}

 

void loop() //run over and overagain

{

 // basic colors;

 color(255,0,0);//red on

 delay(1000);

 color(0,255,0);//green on

 delay(1000);

 color(0,0,255);//blue on

 delay(1000);

 

 //blended colors;

 color(255,255,0);//yellow  on

 delay(1000);

 color(255,255,255);//white  on

 delay(1000);

 color(128,0,255);//purple on

 delay(1000);

 color(0,0,0);//light off

 delay(1000);

}

void color(unsigned charred,unsigned char green,unsigned char blue )

{

 analogWrite(redPin,red);

 analogWrite(greenPin,green);

 analogWrite(bluePin,blue);

}

通过控制每种色光的亮灭来改变LED的颜色  编写一个函数来控制每一个色光的 脉冲宽度

注意针脚的编号以及要有一根线接地

 

实验三 LED灯显示SOS的莫尔斯电码

 

//莫尔斯电码

在利用摩尔密码灯光求救的时候,定义:灯光长亮为"-",灯光短亮为"."

一个线是一个点的三倍长度 每个线或点之间的时间间隔为一个点的时间  俩个单词之间的间隔为七个点的时间

 

 

int ledPin=13;   

void setup() {

 pinMode(ledPin,OUTPUT);//13号针脚

}

 

void loop() //run over and overagain

{

 flash(200);flash(200);flash(200);//S

 delay(300);

 flash(500);flash(500);flash(500);//O

 flash(200);flash(200);flash(200);//S

 delay(1000);

 

}

void flash(int duration)

 

{

 digitalWrite(ledPin,HIGH);

 delay(duration);

 digitalWrite(ledPin,LOW);

 delay(duration);

}

 

**digitalWrite函数中HIGH,LOW***

实验四  莫尔斯代码翻译机

int ledPin=13;

char* letters[]={".-", "-..." , "-.-." , ".." , "." ,"..-.",//A-F

"-." ,"....", ".." , ".---" , "-.-" ,".-..","--",//G-M

"-.", "---", ".--." ,"--.-" , ".-." ,"..." ,"-" ,//N-T

"..-"  , "...-" ,".--","-..-","-.--","--.."//U-Z

};

char*numbers[]={"-----",".----","..---","...--","....-",".....",//0-5

"-....","--...","---..","----."//6-9

};

int dotDelay=200;

void setup() {

 pinMode(ledPin,OUTPUT);//13号针脚

 Serial.begin(9600);

}

 

void loop() //run over and overagain

{

 char ch;

 if(Serial.available())

 //from USB?

 {

 ch=Serial.read();

 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);

 }

 }

}

void flashSequence(char*sequence)

{

 int i=0;

 while(sequence[i]!=NULL)

 {

    flashDotorDash(sequence[i]);

    i++;

 }

 delay(dotDelay*3);

}

void flashDotorDash(chardotorDash)

{

 digitalWrite(ledPin,HIGH);

 if(dotorDash=='.')

 {

    delay(dotDelay);

 }

 else

 {

    delay(dotDelay*3);

 }

 digitalWrite(ledPin,LOW);

 delay(dotDelay);

}

Serial.begin(9600);

将通过USB通信的速率设置为9600波特  它是计算机上Arduino软件的使用的默认速率

Serial.read;

将字符串发送过来 则Serial.available为真 执行循环

字符串末尾 NULL(\0)

 

实验五  按键开关的使用

int Key=2;

int ledPin=13;

 

void setup()

{

 pinMode(Key,INPUT);

 pinMode(ledPin,OUTPUT);

}

 

void loop() {

 int buttonState = digitalRead(Key);

 if(buttonState==0)

 {

    digitalWrite(ledPin,HIGH);

 }

 else

    digitalWrite(ledPin,LOW);

}

通过Serial.println 确定了 digitalRead 当按键按下时为0,未按下时为1;

 

 

 

实验六 按键色光闪烁

int Key=2;

int bluePin=12;

int greenPin=11;

int redPin=10;

int state=0;

 

void setup() {

 pinMode(Key,INPUT);

 pinMode(bluePin,OUTPUT);

 pinMode(greenPin,OUTPUT);

 pinMode(redPin,OUTPUT);

}

 

void loop() {

 if(!digitalRead(Key))

 {

 BLINK(HIGH,HIGH,HIGH,300);

 BLINK(LOW,LOW,LOW,0);

 delay(1000);

 }

 

}

void BLINK (int red,intgreen,int blue,int time)

{

 digitalWrite(redPin,red);

 delay(time);

 digitalWrite(greenPin,green);

 delay(time);

 digitalWrite(bluePin,blue);

 delay(time);

}

 

 

实验七 点亮七彩灯

int Key=2;

int ledKin=12;

 

void setup() {

 pinMode(Key,INPUT);

 pinMode(ledKin,OUTPUT);

 

}

 

void loop() {

 

 if(!digitalRead(Key))

 {

    digitalWrite(ledKin,HIGH);

    delay(3000);

    digitalWrite(ledKin,LOW);

    delay(500);

 }

}

 

//AI:模拟量输入,比如所有的变送器接入DCS的信号就是AI信号,它是连续的,是不由你认为来控制的;AO:模拟量输出,比如调节阀给出去的信号就是AO信号,是4-20mA的信号;DI:数字量输入,比如现场泵反馈回的启停信号,开关阀反馈回的开关信号,就属于DI信号,只有1和0两种状态;DO:数字量输出,比如你给开关阀继电器的开关信号,就属于DO信号,也只有1和0两个状态,是由人为的通过DCS输出去的信号。

 

 

实验八 测温模块的使用

int potPin = 0;

void setup()

{

Serial.begin(9600);//设置波特率

}

void loop()

{

int val;//定义变量

int dat;//定义变量

val=analogRead(0);//读取传感器的模拟值并赋值给val

//dat=(125*val)>>8;//温度计算公式(错误)

Serial.print("Tep:");//原样输出显示Tep字符串代表温度

Serial.print(val);//输出显示dat的值

Serial.println("C");//原样输出显示C字符串

delay(500);//延时0.5

}

//不知道温度转换公式 无法将输出的值转化为可读的温度

AO 输出模拟量

 

今日总结 :学习了LED灯,三色LED,7彩闪烁LED灯,按键开关以及数字温度传感器,学会了用针脚来控制传感器与模块,把c语言的分支,循环语句用在了灯光控制上,以及学会了用arduino的串口监视器进行值的输入与输出,尤其是莫尔斯电码翻译器实验中,通过分支循环语句实现了把字母转换成灯光语句的功能。也了解到了通信速率(通常默认为9600波特),还了解到了AO DO 的区别,具体表现在了analogWrite与digitalWrite函数的不同功能,最后的测温实验由于没有找到正确的温度计算公式,没有完成,但是对测温模块的基本原理与使用方法已经有了基本的了解。

 

 

 

 

 

 

猜你喜欢

转载自blog.csdn.net/a568713197/article/details/78733590
今日推荐