找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4865|回复: 11
打印 上一主题 下一主题
收起左侧

Arduino加5110屏+TEA5767组成的数调收音机源程序

  [复制链接]
跳转到指定楼层
楼主

  1. #include <TEA5767N.h>  //https://github.com/mroger/TEA5767
  2. #include <LCD5110_Graph.h> //http://www.rinkydinkelectronics点com/library.php?id=48

  3. LCD5110 lcd(8,9,10,12,11);
  4. TEA5767N radio = TEA5767N();

  5. extern unsigned char BigNumbers[];
  6. extern unsigned char TinyFont[];

  7. extern uint8_t splash[];
  8. extern uint8_t signal5[];
  9. extern uint8_t signal4[];
  10. extern uint8_t signal3[];
  11. extern uint8_t signal2[];
  12. extern uint8_t signal1[];

  13. int analogPin = 0;
  14. int val = 0;
  15. int frequencyInt = 0;
  16. float frequency = 0;
  17. float previousFrequency = 0;
  18. int signalStrength = 0;

  19. void setup()
  20. {
  21.   radio.setMonoReception();
  22.   radio.setStereoNoiseCancellingOn();
  23.   initScreen();
  24.   showSplashScreen();
  25.   Serial.begin(9600);
  26. }

  27. void loop() {
  28.   
  29.   for(int i;i<30;i++)
  30.   {
  31.      val = val + analogRead(analogPin);
  32.      delay(1);
  33.   }
  34.   
  35.   val = val/30;
  36.   frequencyInt = map(val, 2, 1014, 8700, 10700); //Analog value to frequency from 87.0 MHz to 107.00 MHz
  37.   float frequency = frequencyInt/100.0f;

  38.   if(frequency - previousFrequency >= 0.1f || previousFrequency - frequency >= 0.1f)
  39.   {
  40.     lcd.clrScr();
  41.     radio.selectFrequency(frequency);
  42.     printSignalStrength();
  43.     printStereo();
  44.     printFrequency(frequency);
  45.     previousFrequency = frequency;   
  46.   }
  47.   
  48.   lcd.clrScr();
  49.   printSignalStrength();
  50.   printStereo();
  51.   printFrequency(frequency);
  52.   delay(50);
  53.   val = 0;  
  54. }

  55. void initScreen()
  56. {
  57.   lcd.InitLCD();
  58.   lcd.setFont(BigNumbers);
  59.   lcd.clrScr();
  60. }

  61. void showSplashScreen()
  62. {
  63.   lcd.drawBitmap(0, 0, splash, 84, 48);
  64.   lcd.update();  
  65.   delay(3000);
  66.   lcd.clrScr();
  67.   lcd.update();
  68. }

  69. void printFrequency(float frequency)
  70. {
  71.   String frequencyString = String(frequency,1);
  72.   if(frequencyString.length() == 4)
  73.   {
  74.     lcd.setFont(BigNumbers);
  75.     lcd.print(frequencyString,14,12);
  76.     lcd.update();
  77.   }
  78.   else
  79.   {
  80.     lcd.setFont(BigNumbers);
  81.     lcd.print(frequencyString,0,12);
  82.     lcd.update();
  83.   }
  84. }
  85. void printStereo()
  86. {
  87.     boolean isStereo = radio.isStereo();
  88.      if(isStereo)
  89.     {
  90.       lcd.setFont(TinyFont);
  91.       lcd.print("STEREO",55,2);
  92.     }
  93. }

  94. void printSignalStrength()
  95. {
  96.   signalStrength = radio.getSignalLevel();
  97.   String signalStrenthString = String(signalStrength);
  98.   if(signalStrength >=15)
  99.   {
  100.     lcd.drawBitmap(1, 1, signal5, 17 , 6);
  101.   }else if(signalStrength >=11 && signalStrength <15)
  102.   {
  103.     lcd.drawBitmap(1, 1, signal4, 17 , 6);
  104.   }
  105.   else if(signalStrength >=9 && signalStrength <11)
  106.   {
  107.     lcd.drawBitmap(1, 1, signal3, 17 , 6);
  108.   }
  109.    else if(signalStrength >=7 && signalStrength <9)
  110.   {
  111.     lcd.drawBitmap(1, 1, signal2, 17 , 6);
  112.   }
  113.    else if(signalStrength <7)
  114.   {
  115.     lcd.drawBitmap(1, 1, signal1, 17 , 6);
  116.   }
  117. }
复制代码


FMRadio(tea5767_5110-nano).zip

2.09 KB, 下载次数: 74

完整代码

评分

参与人数 2黑币 +65 收起 理由
wangshoukai + 15
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏5 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:701198 发表于 2020-5-8 16:12 | 只看该作者
找了好久终于找到了,感谢楼主分享
回复

使用道具 举报

板凳
ID:701198 发表于 2020-5-8 16:13 | 只看该作者
感谢楼主分享,终于找到了。
回复

使用道具 举报

地板
ID:378732 发表于 2020-8-5 19:58 | 只看该作者
这个电路图是用什么画的
回复

使用道具 举报

5#
ID:798252 发表于 2020-8-7 10:44 | 只看该作者
ty417502873 发表于 2020-8-5 19:58
这个电路图是用什么画的

应该是fritzing画的
回复

使用道具 举报

6#
ID:979259 发表于 2021-11-8 20:18 | 只看该作者
如何搜台的?
回复

使用道具 举报

7#
ID:1061340 发表于 2023-1-17 15:43 | 只看该作者

通过旋转电位器搜索电台
回复

使用道具 举报

8#
ID:1075262 发表于 2023-7-12 16:52 | 只看该作者
求教:有没有大佬做成功的?我怎么频率卡在87Mhz,频率电位器怎么调都不变。
回复

使用道具 举报

9#
ID:1083556 发表于 2023-7-23 00:49 | 只看该作者

找了好久终于找到了,感谢楼主分享
回复

使用道具 举报

10#
ID:1088165 发表于 2023-7-23 21:51 | 只看该作者
程序报错,有能解决吗?

Arduino:1.8.13 (Windows 10), 开发板:"Arduino Uno"

D:\arduino\arduino作品\Arduino加5110屏+TEA5767组成的数调收音机源程序\51黑论坛_FMRadio(tea5767_5110-nano)\FMRadio\FMRadio1\FMRadio1.ino: In function 'void printStereo()':

D:\arduino\arduino作品\Arduino加5110屏+TEA5767组成的数调收音机源程序\51黑论坛_FMRadio(tea5767_5110-nano)\FMRadio\FMRadio1\FMRadio1.ino:101:30: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]

C:\Users\Administrator\Documents\Arduino\libraries\TEA5767-master\TEA5767N.cpp: In function 'transmitData.constprop':

C:\Users\Administrator\Documents\Arduino\libraries\TEA5767-master\TEA5767N.cpp:92:13: warning: iteration 5 invokes undefined behavior [-Waggressive-loop-optimizations]

   Wire.write(transmission_data[i]);

             ^

C:\Users\Administrator\Documents\Arduino\libraries\TEA5767-master\TEA5767N.cpp:91:18: note: within this loop

  for (int i=0 ; i<6 ; i++) {

                  ^

C:\Users\Administrator\AppData\Local\Temp\cclP43mC.ltrans0.ltrans.o: In function `printSignalStrength':

D:\arduino\arduino作品\Arduino加5110屏+TEA5767组成的数调收音机源程序\51黑论坛_FMRadio(tea5767_5110-nano)\FMRadio\FMRadio1/FMRadio1.ino:111: undefined reference to `signal5'

D:\arduino\arduino作品\Arduino加5110屏+TEA5767组成的数调收音机源程序\51黑论坛_FMRadio(tea5767_5110-nano)\FMRadio\FMRadio1/FMRadio1.ino:111: undefined reference to `signal5'

D:\arduino\arduino作品\Arduino加5110屏+TEA5767组成的数调收音机源程序\51黑论坛_FMRadio(tea5767_5110-nano)\FMRadio\FMRadio1/FMRadio1.ino:114: undefined reference to `signal4'

D:\arduino\arduino作品\Arduino加5110屏+TEA5767组成的数调收音机源程序\51黑论坛_FMRadio(tea5767_5110-nano)\FMRadio\FMRadio1/FMRadio1.ino:114: undefined reference to `signal4'

D:\arduino\arduino作品\Arduino加5110屏+TEA5767组成的数调收音机源程序\51黑论坛_FMRadio(tea5767_5110-nano)\FMRadio\FMRadio1/FMRadio1.ino:118: undefined reference to `signal3'

D:\arduino\arduino作品\Arduino加5110屏+TEA5767组成的数调收音机源程序\51黑论坛_FMRadio(tea5767_5110-nano)\FMRadio\FMRadio1/FMRadio1.ino:118: undefined reference to `signal3'

D:\arduino\arduino作品\Arduino加5110屏+TEA5767组成的数调收音机源程序\51黑论坛_FMRadio(tea5767_5110-nano)\FMRadio\FMRadio1/FMRadio1.ino:122: undefined reference to `signal2'

D:\arduino\arduino作品\Arduino加5110屏+TEA5767组成的数调收音机源程序\51黑论坛_FMRadio(tea5767_5110-nano)\FMRadio\FMRadio1/FMRadio1.ino:122: undefined reference to `signal2'

C:\Users\Administrator\AppData\Local\Temp\cclP43mC.ltrans0.ltrans.o: In function `showSplashScreen':

D:\arduino\arduino作品\Arduino加5110屏+TEA5767组成的数调收音机源程序\51黑论坛_FMRadio(tea5767_5110-nano)\FMRadio\FMRadio1/FMRadio1.ino:72: undefined reference to `splash'

D:\arduino\arduino作品\Arduino加5110屏+TEA5767组成的数调收音机源程序\51黑论坛_FMRadio(tea5767_5110-nano)\FMRadio\FMRadio1/FMRadio1.ino:72: undefined reference to `splash'

collect2.exe: error: ld returned 1 exit status

exit status 1

为开发板 Arduino Uno 编译时出错。



在文件 -> 首选项开启
“编译过程中显示详细输出”选项
这份报告会包含更多信息。
回复

使用道具 举报

11#
ID:1075262 发表于 2023-7-24 15:19 | 只看该作者
uno是可以通过编译的,你是否已经把FMRadio.ino,icons.c,splash.c 三个文件放在一个目录里?
回复

使用道具 举报

12#
ID:369888 发表于 2023-7-30 13:11 | 只看该作者
Fritzing中 TEA5767   LM386   5110  的原件库怎么弄的,能发我一下吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表