arduino 超声波悬浮

这篇文章详细介绍了如何在Arduino中使用定时器1和GPIO(如PORTC)控制超声波传感器,适合初学者学习基本的硬件编程和I/O操作,同时提到了几种常见的电机驱动模块及其应用场景。
摘要由CSDN通过智能技术生成

代码是网上找的,自己加工了一下,

注释全部制作过程,特别适合初学者

#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 桥驱动器,适用于中等功率的电机驱动应用,具有过热和过载保护功能。
优点:高效率、低热设计,适用于各种小型机器人和车辆项目。
适用场景:适用于需要驱动中等功率电机的小型项目。
*/

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值