彰化一整天的論壇

 找回密碼
 立即註冊
查看: 1547|回復: 1

可變電阻控制七段顯示器程式碼

[複製鏈接]
發表於 2016-10-13 20:29:01 | 顯示全部樓層 |閱讀模式
  1. //*搭配可變電阻控制七段顯示器
  2. int ledPinA = 7;
  3. int ledPinB = 6;
  4. int ledPinC = 4;
  5. int ledPinD = 3;
  6. int ledPinE = 2;
  7. int ledPinF = 9;
  8. int ledPinG = 10;
  9. int ledPinGND1 = 14;
  10. int ledPinGND2 = 14;
  11. int ledPinDP = 5;

  12. // 定義可變電阻值腳位
  13. int analogPin = 0;

  14. // 可變電阻值
  15. int analogVal = 0;

  16. // LED顯示數字
  17. int numLED = 0;

  18. void setup(){
  19.   Serial.begin(9600);
  20.   for (int i=0;i<=10;i++){
  21.    pinMode(i,OUTPUT);
  22.   }
  23. }
  24. void showChar(int);
  25. void loop(){
  26.   analogVal = analogRead(analogPin);
  27.   int foo = (analogVal+1) * 10 / 1024;
  28.   numLED = foo*9/10;
  29.   Serial.print("Analog value:");
  30.   Serial.print(analogVal);
  31.   Serial.print(" / LED value:");
  32.   Serial.print(numLED);
  33.   Serial.print("\n");
  34.   showChar(numLED);
  35. }

  36. void showChar(int intChar){
  37.   switch(intChar){
  38.   case 0:
  39.     digitalWrite(ledPinA, HIGH);
  40.     digitalWrite(ledPinB, HIGH);
  41.     digitalWrite(ledPinC, HIGH);
  42.     digitalWrite(ledPinD, HIGH);
  43.     digitalWrite(ledPinE, HIGH);
  44.     digitalWrite(ledPinF, HIGH);
  45.     digitalWrite(ledPinG, LOW);
  46.     digitalWrite(ledPinDP, LOW);
  47.     break;
  48.   case 1:
  49.     digitalWrite(ledPinA, LOW);
  50.     digitalWrite(ledPinB, HIGH);
  51.     digitalWrite(ledPinC, HIGH);
  52.     digitalWrite(ledPinD, LOW);
  53.     digitalWrite(ledPinE, LOW);
  54.     digitalWrite(ledPinF, LOW);
  55.     digitalWrite(ledPinG, LOW);
  56.     digitalWrite(ledPinDP, LOW);
  57.     break;
  58.   case 2:
  59.     digitalWrite(ledPinA, HIGH);
  60.     digitalWrite(ledPinB, HIGH);
  61.     digitalWrite(ledPinC, LOW);
  62.     digitalWrite(ledPinD, HIGH);
  63.     digitalWrite(ledPinE, HIGH);
  64.     digitalWrite(ledPinF, LOW);
  65.     digitalWrite(ledPinG, HIGH);
  66.     digitalWrite(ledPinDP, LOW);
  67.     break;
  68.   case 3:
  69.     digitalWrite(ledPinA, HIGH);
  70.     digitalWrite(ledPinB, HIGH);
  71.     digitalWrite(ledPinC, HIGH);
  72.     digitalWrite(ledPinD, HIGH);
  73.     digitalWrite(ledPinE, LOW);
  74.     digitalWrite(ledPinF, LOW);
  75.     digitalWrite(ledPinG, HIGH);
  76.     digitalWrite(ledPinDP, LOW);
  77.     break;   
  78.   case 4:
  79.     digitalWrite(ledPinA, LOW);
  80.     digitalWrite(ledPinB, HIGH);
  81.     digitalWrite(ledPinC, HIGH);
  82.     digitalWrite(ledPinD, LOW);
  83.     digitalWrite(ledPinE, LOW);
  84.     digitalWrite(ledPinF, HIGH);
  85.     digitalWrite(ledPinG, HIGH);
  86.     digitalWrite(ledPinDP, LOW);
  87.     break;
  88.   case 5:
  89.     digitalWrite(ledPinA, HIGH);
  90.     digitalWrite(ledPinB, LOW);
  91.     digitalWrite(ledPinC, HIGH);
  92.     digitalWrite(ledPinD, HIGH);
  93.     digitalWrite(ledPinE, LOW);
  94.     digitalWrite(ledPinF, HIGH);
  95.     digitalWrite(ledPinG, HIGH);
  96.     digitalWrite(ledPinDP, LOW);
  97.     break;
  98.   case 6:
  99.     digitalWrite(ledPinA, HIGH);
  100.     digitalWrite(ledPinB, LOW);
  101.     digitalWrite(ledPinC, HIGH);
  102.     digitalWrite(ledPinD, HIGH);
  103.     digitalWrite(ledPinE, HIGH);
  104.     digitalWrite(ledPinF, HIGH);
  105.     digitalWrite(ledPinG, HIGH);
  106.     digitalWrite(ledPinDP, LOW);
  107.     break;
  108.   case 7:
  109.     digitalWrite(ledPinA, HIGH);
  110.     digitalWrite(ledPinB, HIGH);
  111.     digitalWrite(ledPinC, HIGH);
  112.     digitalWrite(ledPinD, LOW);
  113.     digitalWrite(ledPinE, LOW);
  114.     digitalWrite(ledPinF, LOW);
  115.     digitalWrite(ledPinG, LOW);
  116.     digitalWrite(ledPinDP, LOW);
  117.     break;
  118.   case 8:
  119.     digitalWrite(ledPinA, HIGH);
  120.     digitalWrite(ledPinB, HIGH);
  121.     digitalWrite(ledPinC, HIGH);
  122.     digitalWrite(ledPinD, HIGH);
  123.     digitalWrite(ledPinE, HIGH);
  124.     digitalWrite(ledPinF, HIGH);
  125.     digitalWrite(ledPinG, HIGH);
  126.     digitalWrite(ledPinDP, LOW);
  127.     break;
  128.   case 9:
  129.     digitalWrite(ledPinA, HIGH);
  130.     digitalWrite(ledPinB, HIGH);
  131.     digitalWrite(ledPinC, HIGH);
  132.     digitalWrite(ledPinD, HIGH);
  133.     digitalWrite(ledPinE, LOW);
  134.     digitalWrite(ledPinF, HIGH);
  135.     digitalWrite(ledPinG, HIGH);
  136.     digitalWrite(ledPinDP, LOW);
  137.     break;   
  138.   }
  139. }
複製代碼


回復

使用道具 舉報

 樓主| 發表於 2016-10-13 20:43:22 | 顯示全部樓層
七段顯示器程式碼
– 自己動手做做看
1. 完成上頁未完成的程式碼。
2. 請試著改由serial monitor 輸入0-9的數字,讓
七段碼依輸入的數字顯示。
提示
1:必須將loop迴圈內改用Serial.read的方式讀取資料
if ( Serial.available()) {
numLED=Serial.read();
}
showChar(numLED);
}
提示
2:並將switch case每一個數值判斷改為字元判斷
(即
case 1 改為case ' 1 ')
回復 支持 反對

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

Archiver|手機版|小黑屋|彰化一整天的論壇(Excel,Office)  |网站地图

GMT+8, 2019-8-25 01:46 , Processed in 0.107450 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表