新 Nano(二) 单键控制AD9833

更多内容,请访问我的网站:https://jiangge12.github.io/

演示视频 视频演示2

AD9833 控制并不算复杂,选对合适的库的话几行代码就可以了。

设定频率值则需要很多个按键,比如上图的MHS-5200, 好几个按键还有编码器,往往临时简单实验还需要翻说明书才能搞定。

最近翻出几个触摸按键模块,已测试效果出奇的好,反应灵敏还不需要消抖。

不啰嗦,直接上代码:屏幕左上角是几个标志,方便观察变化;右上角是长按计数,可以做按得越长变量越大,或指数型增长。


#include <Adafruit_SSD1306.h>
Adafruit_SSD1306 display(128, 64, &Wire, 4);
/*----------------------- ------------------------------------------------*/

/*--------- AD9833 ------ ------------------------------------------------*/
#include <MD_AD9833.h>
#include <SPI.h> 
MD_AD9833 AD(/*DATA*/10, /*CLK*/11, /*FSYNC*/12);  
/*----------------------- ------------------------------------------------*/

boolean touching = 0;
boolean holding = 0;
boolean single_touch;
boolean add_or_sub;      
long touch_start_time;
long holding_count;      
long Freq=10000;         
int Waveform=0;
/*----------------------- ------------------------------------------------*/
void setup(){
  Serial.begin(115200);

  display.begin(SSD1306_SWITCHCAPVCC,0x3C);       
  display.setTextColor(1); 
  
  pinMode(A0,OUTPUT);digitalWrite(A0,HIGH);  // Touch Vcc ,data=A2, 注意不同厂家的触摸按键模块 引脚顺序可能不同
  pinMode(A1,OUTPUT);digitalWrite(A1,LOW);   // Touch Gnd
  
  pinMode(8, OUTPUT); digitalWrite(8,HIGH);  // AD9833 vcc
  pinMode(9, OUTPUT); digitalWrite(9,LOW);   // AD9833 Gnd
  AD.begin();  
}
/*----------------------- ------------------------------------------------*/
void loop(){ 
  touch_detect(7);              // 检测按键并设置标志位,参数7表示 10ms x 7,总时间70ms
  touch_handle();               // 根据标志位改变变量值
  AD9833_Set(Waveform,Freq);    // 变量值写入芯片
  refresh_display();            // 当前工作状态写到OLED以及串口
  delay(50);
}

程序改进中,稍后完善再发。。。
Jetson Nano是一款由NVIDIA开发的入门级边缘计算开发套件,它通常用于嵌入式系统应用,包括物联网(IoT)设备。GPIO (General Purpose Input Output) 是一种通用输入输出功能,可以用来控制硬件设备,如开关、电机、灯泡等。 如果你想通过Jetson Nano的GPIO控制水弹发射器,你需要按照以下步骤操作: 1. **准备硬件**: - 购买或自制一个GPIO兼容的水弹发射器电路板,连接好发射器所需的信号线到Jetson Nano的GPIO引脚上。 - 确保Jetson Nano已正确连接电源和显示器,并配置好操作系统。 2. **编写程序**: - 使用支持Linux环境的语言(比如Python或C++),利用Jetson.GPIO库或者其他类似库来操作GPIO。 - 编写控制函数,设置相应的GPIO引脚为输出模式,然后根据需要(高电平或低电平)触发发射信号。 ```python import RPi.GPIO as GPIO # 设置GPIO为BCM模式 GPIO.setmode(GPIO.BCM) # 设定发射器的GPIO编号 fire_button_pin = 17 # 这是一个假设的GPIO,实际根据你的硬件布局替换 GPIO.setup(fire_button_pin, GPIO.OUT) # 输出模式 def launch_waterballoon(): GPIO.output(fire_button_pin, GPIO.HIGH) # 发射时设置为高电平 time.sleep(0.5) # 停留一段时间,让水弹发射出去 GPIO.output(fire_button_pin, GPIO.LOW) # 发射完毕设置为低电平,关闭信号 launch_waterballoon() ``` 记得在完成后清理GPIO资源,防止资源泄露: ```python GPIO.cleanup() # 关闭所有GPIO ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值