找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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, 下载次数: 11, 下载积分: 黑币 -5

完整代码

评分

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

查看全部评分

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

应该是fritzing画的
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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