Browse Source

新增led灯测试代码

corvin 5 years ago
parent
commit
23d9d5c683
6 changed files with 125 additions and 41 deletions
  1. 1 0
      .gitignore
  2. 30 0
      example/python_led_blink.py
  3. 34 0
      example/python_led_fade.py
  4. 27 0
      example/wiringpi_led_blink.c
  5. 33 0
      example/wiringpi_led_fade.c
  6. 0 41
      led_test.py

+ 1 - 0
.gitignore

@@ -1 +1,2 @@
 *.o
+.vscode

+ 30 - 0
example/python_led_blink.py

@@ -0,0 +1,30 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import RPi.GPIO as GPIO
+import time
+
+#led灯的物理引脚
+channel=32
+
+GPIO.setmode(GPIO.BOARD)
+GPIO.setwarnings(False)
+GPIO.setup(channel, GPIO.OUT, initial=GPIO.HIGH)
+
+try:
+    while True:
+        #led灯GPIO置高-灭
+        GPIO.output(channel, GPIO.HIGH)
+        print("X")
+        time.sleep(1)
+
+        #led灯GPIO置低-亮
+        GPIO.output(channel, GPIO.LOW)
+        print("O")
+        time.sleep(1)
+except KeyboardInterrupt:
+    pass
+
+#GPIO资源清理
+GPIO.cleanup()
+

+ 34 - 0
example/python_led_fade.py

@@ -0,0 +1,34 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+import RPi.GPIO as GPIO
+import time
+
+#led灯的物理引脚
+channel=32
+
+GPIO.setmode(GPIO.BOARD)
+GPIO.setwarnings(False)
+GPIO.setup(channel, GPIO.OUT, initial=GPIO.LOW)
+
+pwm = GPIO.PWM(channel, 50)
+pwm.start(0)
+try:
+    while True:
+        #led灯慢慢变亮
+        for duty in range(100, 0, -4):
+            pwm.ChangeDutyCycle(duty)
+            time.sleep(0.1)
+
+        #led灯慢慢变暗
+        for duty in range(0, 100, 4):
+            pwm.ChangeDutyCycle(duty)
+            time.sleep(0.1)
+
+except KeyboardInterrupt:
+    pass
+
+#GPIO资源清理
+pwm.stop()
+GPIO.cleanup()
+

+ 27 - 0
example/wiringpi_led_blink.c

@@ -0,0 +1,27 @@
+#include <wiringPi.h>
+#include <stdio.h>
+
+#define LED_PIN  26
+#define DELY_MS  1000
+
+int main(void)
+{
+    wiringPiSetup();
+    pinMode(LED_PIN, OUTPUT);
+
+    while(1)
+    {
+        //led GPIO引脚置高电平,灯灭
+        digitalWrite(LED_PIN, HIGH);
+        printf("X\n");
+        delay(DELY_MS);
+
+        //led GPIO引脚置低电平,灯亮
+        digitalWrite(LED_PIN, LOW);
+        printf("O\n");
+        delay(DELY_MS);
+    }
+
+    return 0;
+}
+

+ 33 - 0
example/wiringpi_led_fade.c

@@ -0,0 +1,33 @@
+#include <wiringPi.h>
+#include <stdio.h>
+
+#define LED_PIN  26
+#define DELY_MS  10
+
+int main(void)
+{
+    int duty = 1024;
+
+    wiringPiSetup();
+    pinMode(LED_PIN, PWM_OUTPUT);
+
+    while(1)
+    {
+        //led 灭->亮
+        for(duty=1024; duty>=0; duty-=4)
+        {
+            pwmWrite(LED_PIN, duty);
+            delay(DELY_MS);
+        }
+
+        //led 亮-灭
+        for(duty=0; duty<=1024; duty+=4)
+        {
+            pwmWrite(LED_PIN, duty);
+            delay(DELY_MS);
+        }
+    }
+
+    return 0;
+}
+

+ 0 - 41
led_test.py

@@ -1,41 +0,0 @@
-#!/usr/bin/env python
-# encoding: utf-8
-
-import RPi.GPIO
-import time
-
-RPi.GPIO.setmode(RPi.GPIO.BCM)
-RPi.GPIO.setup(12, RPi.GPIO.OUT)
-
-# 创建一个 PWM 实例,需要两个参数,第一个是GPIO端口号,这里我们用14号
-# 第二个是频率(Hz),频率越高LED看上去越不会闪烁,相应对CPU要求就越高,设置合适的值就可以
-pwm = RPi.GPIO.PWM(12, 80)
-
-# 启用 PWM,参数是占空比,范围:0.0 <= 占空比 >= 100.0
-pwm.start(0)
-
-try:
-	while True:
-		# 电流从小到大,LED由暗到亮
-		for i in xrange(0, 101, 1):
-			# 更改占空比,
-			pwm.ChangeDutyCycle(i)
-			time.sleep(.02)
-			
-		# 再让电流从大到小,LED由亮变暗
-		for i in xrange(100, -1, -1):
-			pwm.ChangeDutyCycle(i)
-			time.sleep(.02)
-
-# 最后一段是一个小技巧。这个程序如果不强制停止会不停地执行下去。
-# 而Ctrl+C强制终端程序的话,GPIO口又没有机会清理。
-# 加上一个try except 可以捕捉到Ctrl+C强制中断的动作,
-# 试图强制中断时,程序不会马上停止而是会先跳到这里来做一些你想做完的事情,比如清理GPIO口。
-except KeyboardInterrupt:
-	pass
-
-# 停用 PWM
-pwm.stop()
-
-# 清理GPIO口
-RPi.GPIO.cleanup()