代码是网上找的,自己加工了一下,
注释全部制作过程,特别适合初学者
#include <Arduino.h>
byte TP = 0b10101010; //every 2nd port receives the opposite signal
void ultrasonicSensor_setup()
{
//pinMode(5, OUTPUT);
//pinMode(6, OUTPUT);
//pinMode(9, OUTPUT);
//pinMode(10, OUTPUT);
DDRD = 0b11111111;
DDRC = 0b11111111; //Define all analog ports as outputs
// Initialize timer 1
noInterrupts(); // Disable interrupts
TCCR1A = 0;
TCCR1B = 0;
TCNT1 = 0;
OCR1A = 200; // Set Compare Match Register (16MHz / 200 = 80kHz square -> 40kHz full wave)
TCCR1B |= (1 << WGM12); // 设置为CTC 模式
TCCR1B |= (1 << CS10);
TIMSK1 |= (1 << OCIE1A); // 启用比较匹配中断
interrupts(); // Activate interrupts
}
ISR(TIMER1_COMPA_vect)
{
//digitalWrite(5, bitRead(TP, 0));
//digitalWrite(6, 0);
//digitalWrite(9, bitRead(TP, 1));
//digitalWrite(10, 0);
//PORTD = TP;//0~7
//TP = ~TP;
//PORTB = TP;//8~13
PORTD = TP;
PORTC = TP; // Send the value TP to the outputs
//在 Arduino 中,PORTC 是一个表示特定 I/O 端口的变量。具体而言,PORTC 是一个8位的寄存器,用于控制 Arduino 的数字引脚 14 至 19(标记为 A0 至 A5)。通过设置 PORTC 寄存器的位,可以控制对应引脚的状态,例如将引脚设置为高电平或低电平。由于 PORTC 是直接与硬件交互的寄存器,使用它可以实现更高效的 I/O 操作。
/*
for (int i = 0; i < 8; i++)
{
digitalWrite(i + 22, bitRead(TP, i)); // Send the individual bits of TP to the outputs
}
*/
TP = ~TP; // Invert TP for the next run
}
void setup()
{
delay(2000);
pinMode(12, OUTPUT);
digitalWrite(12, 0);
ultrasonicSensor_setup();
}
void loop()
{
/*
驱动模块可以任意,而且驱动电压最小可以只有5V
用哪个引脚都可以,但要一对,而且用寄存器来设置
输出a0接驱动模块in1 a1接驱动模块in2
两个超声波发射T都接相同的+-极 和 输出
超声波正极接驱动模块输出1 正
超声波负极(有黑圈)接驱动模块输出2 负
关键点在于输出是连个引脚,一个0 一个1 相互切换就好。
如果能量大,启动成功会有微弱的声音
*/
}
/*
0~13引脚对应的寄存器如下:
DDRD 寄存器:用于设置D0至D7引脚的输入/输出状态。
PORTD 寄存器:用于设置D0至D7引脚的输出状态。
PIND 寄存器:用于读取D0至D7引脚的输入状态。
以及:
DDRB 寄存器:用于设置D8至D13引脚的输入/输出状态。
PORTB 寄存器:用于设置D8至D13引脚的输出状态。
PINB 寄存器:用于读取D8至D13引脚的输入状态。
模拟引脚A0~A5,它们对应的寄存器如下:
DDRC 寄存器:用于设置A0至A5引脚的输入/输出状态。
PORTC 寄存器:用于设置A0至A5引脚的输出状态。
PINC 寄存器:用于读取A0至A5引脚的输入状态。
DRV8833C:
供给电压:2.7V 到 10.8V
功率:最大输出电流为 1.5A
特点:双通道 H 桥驱动器,适用于低电压、低功率的电机驱动应用,具有内置过热和过载保护功能。
优点:适合小型机器人、智能车等低功率电机驱动应用。
适用场景:适用于需要驱动低电压电机的小型项目。
L293D:
供给电压:4.5V 到 36V
功率:最大输出电流为 600mA(连续),1.2A(峰值)
特点:四通道 H 桥驱动器,适用于中等功率的电机驱动应用,有较高的电压和电流容量。
优点:耐压能力强,可输出较大电流。
适用场景:适用于驱动大功率电机的应用,如机械臂、车辆等。
MAX1508:
供给电压:2.3V 到 13.2V
功率:最大输出电流为 1.1A
特点:单通道电机驱动器,具有PWM速度控制功能和电流限制功能。
优点:紧凑型设计,适用于小型电机控制应用。
适用场景:适用于需要精确控制电机速度和电流的小型项目。
TB6612:
供给电压:4.5V 到 13.5V
功率:最大输出电流为 1.2A(连续),3.2A(峰值)
特点:双通道 H 桥驱动器,适用于中等功率的电机驱动应用,具有过热和过载保护功能。
优点:高效率、低热设计,适用于各种小型机器人和车辆项目。
适用场景:适用于需要驱动中等功率电机的小型项目。
*/