21.6.19交互装置设计课程总结


1、超声波传感器Input,Led Output

const int echopin = 3;

const int trigpin = 2;

const int led = 8;

void setup() {

Serial.begin(9600);

pinMode(echopin,INPUT);

pinMode(trigpin,OUTPUT);

pinMode(led,OUTPUT);

}

void loop() {

digitalWrite(trigpin,LOW);

delayMicroseconds(2);

digitalWrite(trigpin,HIGH);

delayMicroseconds(10);

digitalWrite(trigpin,LOW);

int distance = pulseIn(echopin,HIGH);

distance = distance/147*2.45;

Serial.println(distance);//输出超声波测距距离

if(distance<100){

digitalWrite(led,1);//如果距离小于1m,灯亮

}else{

digitalWrite(led,0);//否则灯灭

}

delay(20);

}

————————间隔符———————————-

2、光敏电阻Input,舵机Output

#include<Servo.h>

Servo servo;

void setup(){

Serial.begin(9600);

servo.attach(5);//5号pin口插舵机

}

void loop(){

if(analogRead(0)>700){

servo.write(45);//如果光敏电阻被遮挡,舵机旋转至45度

}

else{

servo.write(180);//否则舵机旋转至180度

}

delay(15);

}

//—————————–分隔符—————————-

3、Arduino与processing串口通讯,光敏电阻5506Input,Processing视觉Output

//Arduino 代码:

void setup(){

Serial.begin(9600);

}

void loop(){

if(analogRead(0)>600){

Serial.write(0);//如果a0口检测的光敏电阻被阻挡,向串口发送0

Serial.flush();

}

else if(analogRead(1)>600){

Serial.write(1);//如果a1口检测的光敏电阻被阻挡,向串口发送1

Serial.flush();

}

else{

Serial.write(9);//如果所有a口的光敏电阻都没被阻挡,向串口发送9

Serial.flush();

}

delay(80);

}

//precessing代码:

import processing.serial.*

Serial myPort;

void setup(){

size(600,600);

frameRate(30);

background(0);

myPort = new Serial(this,”COM3″,9600);//中间的参数为串口通讯接口

}

void draw(){

if(myPort.available()>0){

data = myPort.read();

println(data);

}

if(data==0){ //当串口传入0时……做什么

fill(255,0,0);

ellipse(300,300,20,20);

}

else if(data==1){ //当串口传入1时……做什么

fill(255,255,0);

ellipse(300,300,200,200);

}

}

//——————————间隔符———————————-

4、超声波Input,继电器控制大功率5v/12v/220v非可控彩色rgb灯带Output

const int echopin = 3;
const int trigpin = 2;
const int in = 7;//控制继电器in口
void setup() {
Serial.begin(9600);
pinMode(echopin,INPUT);
pinMode(trigpin,OUTPUT);
pinMode(in,OUTPUT);
}

void loop() {
digitalWrite(trigpin,LOW);
delayMicroseconds(2);
digitalWrite(trigpin,HIGH);
delayMicroseconds(10);
digitalWrite(trigpin,LOW);
int distance = pulseIn(echopin,HIGH);
distance = distance/147*2.45;
Serial.println(distance);//输出超声波测距距离
if(distance<100){
digitalWrite(in,1);//如果距离小于1m,in与com口短接,给led供电
}else{
digitalWrite(in,0);//如果距离大于1m,in与com口断开,led不亮
}

//——————————间隔符———————————-

5、光敏电阻5506Input,LED发光二极管Output

void setup() {
pinMode(12,OUTPUT);
}

void loop() {
if(analogRead(0)>700){ //如果遮挡了光敏电阻,12号口灯亮
digitalWrite(12,1);
}
if(analogRead(0)<700){ //如果光敏电阻无遮挡,12号口灯灭
digitalWrite(12,0);
}
}

//——————————间隔符———————————-

6、超声波Input,ws2812 LEDRGB发光光二极管Output

//项目-加载库-管理库里搜索Adafruit_NeoPixel库并添加

#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif

// 控制 WS2812 灯条的引脚编号
#define PIN 6
//定义控制的 LED 数量
#define NUMPIXELS 5
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
//相邻 LED 之间的延迟,单位毫秒
#define DELAYVAL 50

const int echopin = 3;
const int trigpin = 2;

void setup() {
Serial.begin(9600);
pinMode(echopin,INPUT);
pinMode(trigpin,OUTPUT);

#if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
clock_prescale_set(clock_div_1);
#endif
pixels.begin();

}

void loop() {
pixels.clear(); //设置所有灯灭
digitalWrite(trigpin,LOW);
delayMicroseconds(2);
digitalWrite(trigpin,HIGH);
delayMicroseconds(10);
digitalWrite(trigpin,LOW);
int distance = pulseIn(echopin,HIGH);
distance = distance/147*2.45;
Serial.println(distance);//输出超声波测距距离
if(distance<100){
for(int i=0; i<NUMPIXELS; i++) {
pixels.setPixelColor(i, pixels.Color(150, 150, 0));//控制流水灯颜色
pixels.show();
delay(DELAYVAL);
}
}else{
pixels.clear();
}
delay(20);
}


发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注