arduino - 如何读取 Arduino UNO 上 3 个输出引脚的状态,然后将它们 NAND 连接在一起?
问题描述
所以我正在开发软件来控制 H8 逆变器。我在线获得了为三相逆变器执行 SPWM 的代码。然后我在 Arduino UNO 的 3 个输出上应用了一个软件与非门,这就是我得到的结果:
//-------www<electronics-project-hub>com--------//
#include <math.h>
int Output1 = 11;
int Output2 = 10;
int Output3 = 9;
int Output4 = 8;
uint8_t a = 0;
uint8_t w = 0; //PB3
uint8_t x = 0; //PB2
uint8_t y = 0; //PB1
uint8_t z = 0; //PB0
int potVal = 0;
float A = 0;
float B = 0.104;
int Freq_IN = A0;
int var1 = 0;
int var2 = 0;
int var3 = 0;
int var4 = 0;
int var5 = 0;
int var6 = 0;
float Phase1 = 2 * PI / 3;
float Phase2 = 4 * PI / 3;
float Phase3 = 2 * PI;
boolean toggle = true; // true = Enabling Serial Plotter Output
void setup()
{
Serial.begin(9600);
pinMode(Output1, OUTPUT);
pinMode(Output2, OUTPUT);
pinMode(Output3, OUTPUT);
pinMode(Freq_IN, INPUT);
}
void loop()
{
A += B;
analogWrite(Output1, var1);
analogWrite(Output2, var2);
analogWrite(Output3, var3);
//digitalWrite(Output4,!
(digitalRead(Output1)&&digitalRead(Output2)&&digitalRead(Output3)));
/*g1 = (PORTD & B00100000) >> 5;
g3 = (PORTB & B00000100) >> 2;
g5 = (PORTD & B00001000) >> 3;
g7 = ~((g1&g3)&g5);
digitalWrite(G7,g7);*/
/*
g4 = (PORTD & B01000000) >> 6;
g6 = (PORTB & B00000010) >> 1;
g2 = (PORTB & B00001000) >> 3;
g8 = !((g4&&g6)&&g2);
digitalWrite(G7,g8);*/
a = PORTB & 0b00001111;
w = (a & 0b00001000) >> PORTB3;
x = (a & 0b00000100) >> PORTB2;
y = (a & 0b00000010) >> PORTB1;
z = ~(w&x&y&z);
PORTB = PORTB | z;
if (toggle == true)
{
Serial.print(var1);
Serial.print(" ");
Serial.print(var2);
Serial.print(" ");
Serial.println(var3);
}
var4 = 126 * sin(A + Phase1);
var1 = var4 + 128;
var5 = 126 * sin(A + Phase2);
var2 = var5 + 128;
var6 = 126 * sin(A + Phase3);
var3 = var6 + 128;
if (A >= 2 * PI)
{
A = 0;
}
potVal = analogRead(Freq_IN);
delay(potVal);
}
//-------www<electronics-project-hub>com--------//
我想指出,软件 NAND 输出一直保持打开状态。硬件 NAND 输出不同,这是我想要得到的结果。
解决方案
这里的另一个问题是你想组合所有信号,比如干扰,我认为使用 NAND 不会使这成为可能,也许你应该尝试使用另一个功能
推荐阅读
- filenames - 如果要求格式为 {firstname}_{lastname}.js,我该如何命名我的文件?
- python - 在python中更改装饰器参数变量的值
- jquery - jQuery 不适用于 SemanticUI 和 Electron.js
- etl - 使用流查找,但在字符串中使用 '%%' 而不是 '='
- r - 为什么在 R 中打开数据集后列名会更改?
- user-interface - Lua 刷新脚本 (ROBLOX)
- python - 在 Python 中从图像中提取每个像素的 x,y 坐标
- java - Bean 轻模式配置如何在 bean 上创建代理
- c++ - 用于二进制到整数转换的算法
- php - 我可以在同一个 Linux 服务器上安装 Xampp 和普通的 Apache 2 吗?