E_Desharow 2023-02-10 09:27 采纳率: 16.7%
浏览 54
已结题

proteus实现多个传感器模拟

#设计三个光发射,两个光敏接收(硬件限制),根据不同接收结果判断光的吸收情况
#方波发生器(作为光发射器供电)

img

因软件限制,故用电阻模拟发射装置,LED模拟光敏电阻情况,通过取得光敏电阻上的电压信号来提取光信号,之后经过时分复用,

img

img

判断出没个光的接收状况,最后产生的信号是方波

img

下一步设想是将信号传给上位机,进行物质判断,但这其中一直没设计AD模数转换,也没涉及汇编,不知是否正确

  • 写回答

1条回答 默认 最新

  • GISer Liu 2023-02-11 12:33
    关注

    以下答案引用自GPT-3大模型,请合理使用:
    #include <stdio.h>

    #include <stdlib.h>

    #include <math.h>

    #include <time.h>

    #define PI 3.14159265358979323846

    #define MAX_INT 2147483647

    #define MAX_DELAY 1000000

    unsigned char led = 7;

    unsigned char inPin1 = 2;

    unsigned char inPin2 = 3;

    unsigned char inPin3 = 4;

    unsigned char inPin4 = 5;

    unsigned char inPin5 = 6;

    unsigned char outPin = 0;

    unsigned char counter = 0;

    unsigned char transmitter = 0;

    unsigned char receiver = 0;

    unsigned char state = 0;

    unsigned char sum = 0;

    unsigned char data = 0;

    unsigned char result = 0;

    unsigned char signal = 0;

    unsigned char time = 0;

    void setup()

    {

    pinMode(led, OUTPUT);

    pinMode(inPin1, INPUT);

    pinMode(inPin2, INPUT);

    pinMode(inPin3, INPUT);

    pinMode(inPin4, INPUT);

    pinMode(inPin5, INPUT);

    pinMode(outPin, OUTPUT);

    digitalWrite(led, HIGH);

    }

    void loop()

    {

    if (counter > 0)

    {

    transmitter = counter;

    counter = 0;

    }

    else

    {

    transmitter = 0;

    }

    if (state == 0)

    {

    digitalWrite(outPin, HIGH);

    delayMicroseconds(transmitter);

    digitalWrite(outPin, LOW);

    }

    else

    {

    digitalWrite(outPin, HIGH);

    delayMicroseconds(transmitter);

    digitalWrite(outPin, LOW);

    delayMicroseconds(MAX_DELAY);

    }

    sum = 0;

    for (int i = 0; i < 8; i++)

    {

    data = (unsigned char)i;

    result = data * signal + sum;

    sum = result / (MAX_INT / 8);

    }

    signal = result;

    time = millis();

    if (time > (MAX_DELAY))

    {

    state++;

    if (state > 3)

    {

    state = 0;

    }

    }

    else

    {

    if (inPin1 == HIGH && inPin2 == LOW && inPin3 == HIGH && inPin4 == LOW)

    {

    receiver = 1;

    }

    if (inPin1 == HIGH && inPin2 == HIGH && inPin3 == LOW && inPin4 == LOW)

    {

    receiver = 2;

    }

    if (inPin1 == LOW && inPin2 == HIGH && inPin3 == LOW && inPin4 == HIGH)

    {

    receiver = 3;

    }

    if (inPin1 == LOW && inPin2 == LOW && inPin3 == HIGH && inPin4 == HIGH)

    {

    receiver = 4;

    }

    }

    if (inPin1 == HIGH && inPin2 == LOW && inPin3 == HIGH && inPin4 == HIGH)

    result = 1;

    if (inPin1 == HIGH && inPin2 == HIGH && inPin3 == LOW && inPin4 == HIGH)

    result = 2;

    if (inPin1 == LOW && inPin2 == HIGH && inPin3 == LOW && inPin4 == HIGH)

    result = 3;

    if (inPin1 == LOW && inPin2 == LOW && inPin3 == HIGH && inPin4 == HIGH)

    result = 4;

    printf("%d
    ", result);

    }

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月2日
  • 创建了问题 2月10日

悬赏问题

  • ¥15 非科班怎么跑代码?如何导数据和调参
  • ¥15 福州市的全人群死因监测点死亡原因报表
  • ¥15 打开powerpont询问是否安装officeplus不小心点了不安装以后再也不提示是否安装了
  • ¥15 Altair EDEM中生成一个颗粒,并且各个方向没有初始速度
  • ¥15 系统2008r2 装机配置推荐一下
  • ¥500 服务器搭建cisco AnyConnect vpn
  • ¥15 用大厂网站防红自己网站
  • ¥15 悬赏Python-playwright部署在centos7上
  • ¥15 psoc creator软件有没有人能远程安装啊
  • ¥15 快速扫描算法求解Eikonal方程咨询