【Openmv和arduino】电平编码通信

电平编码通信,即38通信,io口电平变化判定7种状态。
在这里插入图片描述
底下有最后版本。
这个程序有错误:
Openmv:

from pyb import Pin
import time

value=[0,0,0]

p_in_0 = Pin('P0', Pin.IN, Pin.PULL_UP)#设置p_in为输入引脚,并开启上拉电阻
p_in_1 = Pin('P1', Pin.IN, Pin.PULL_UP)#设置p_in为输入引脚,并开启上拉电阻
p_in_2 = Pin('P2', Pin.IN, Pin.PULL_UP)#设置p_in为输入引脚,并开启上拉电阻

value[0] = p_in_0.value() # get value, 0 or 1#读入p_in引脚的值
value[1] = p_in_1.value() # get value, 0 or 1#读入p_in引脚的值
value[2] = p_in_2.value() # get value, 0 or 1#读入p_in引脚的值
while(True):
    print('value=',value)##000为arduino输出高电平
    time.sleep(2000)

这个程序有错误:
arduino:

#define code_a 2
#define code_b 3
#define code_c 4

void setup() {
   
  // put your setup code here, to run once:
  pinMode(code_a,OUTPUT);
  pinMode(code_b,OUTPUT);
  pinMode(code_c,OUTPUT);
}

void loop() {
   
  // put your main code here, to run repeatedly:
  analogWrite(code_a,HIGH);
  analogWrite(code_b,HIGH);
  analogWrite(code_c,HIGH);

}

在这里插入图片描述
在这里插入图片描述

这个没用,switch写实现不了

#define code_a 2
#define code_b 3
#define code_c 4
int a=2;
void setup() {
   
    // put your setup code here, to run once:
    Serial.begin(9600);
    pinMode(code_a,OUTPUT);
    pinMode(code_b,OUTPUT);
    pinMode(code_c,OUTPUT);
}

      

void loop() {
   
  a=1;
  switch(a){
   
    case 0:
      digitalWrite(code_a,HIGH);
      digitalWrite(code_b,HIGH);
      digitalWrite(code_c,HIGH); 
    case 1:
      digitalWrite(code_a,LOW);
      digitalWrite(code_b,HIGH);
      digitalWrite(code_c,HIGH); 
    case 2:
      digitalWrite(code_a,HIGH);
      digitalWrite(code_b,LOW);
      digitalWrite(code_c,HIGH); 
    case 3:
      digitalWrite(code_a,LOW);
      digitalWrite(code_b,LOW);
      digitalWrite(code_c,HIGH); 
    case 4:
      digitalWrite(code_a,HIGH);
      digitalWrite(code_b,HIGH);
      digitalWrite(code_c,LOW); 
    case 5:
      digitalWrite(code_a,LOW);
      digitalWrite(code_b,HIGH);
      digitalWrite(code_c,LOW); 
    case 6:
      digitalWrite(code_a,LOW);
      digitalWrite(code_b,LOW);
      digitalWrite(code_c,HIGH); 
    case 7:
      digitalWrite(code_a,LOW);
      digitalWrite(code_b,LOW);
      digitalWrite(code_c,LOW);     
  }
  delay(10);
}

可运行程序版本单向通信,arduino发openmv收

python:

from pyb import Pin
import time

v=[0,0,0]
num=[0,0,0,0,0,0,0,0]
count=200
p_in_0 = Pin('P7', Pin.IN, Pin.PULL_DOWN)#设置p_in为输入引脚,并开启上拉电阻
p_in_1 = Pin('P8', Pin.IN, Pin.PULL_DOWN)#设置p_in为输入引脚,并开启上拉电阻
p_in_2 = Pin('P9', Pin.IN, Pin.PULL_DOWN)#设置p_in为输入引脚,并开启上拉电阻


#p_in = Pin('P7', Pin.IN, Pin.PULL_UP)#设置p_in为输入引脚,并开启上拉电阻

def getCode():
    while(True):
        pass
        v[0] = p_in_0.value() # get value, 0 or 1#读入p_in引脚的值
        v[1] = p_in_1.value() # get value, 0 or 1#读入p_in引脚的值
        v[2] = p_in_2.value() # get value, 0 or 1#读入p_in引脚的值
        if v[0]==0 and v[1]==0 and v[2]==0:
            num[0]+=1
            if num[0]>count:
                print('value=',0)##000为arduino输出高电平
                num[0]=0
                #return(0)
                break
        elif v[0]==0 and v[1]==0 and v[2]==1:
            num[1]+=1
            if num[1]>count:
                print('value=',1)##000为arduino输出高电平
                num[1]=0
                return(1)
                break
        elif v[0]==0 and v[1]==1 and v[2]==0:
            #print('value=',2)##000为arduino输出高电平
            num[2]+=1
            if num[2]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值