Wartość analogową z potencjometra obrotowego liniowego możemy odczytać przy pomocy układu MCP3008 (10 bit) lub MCP3208 (12 bit). Dzięki temu możemy łatwo sterować jasnością bądź głośnością układu podłączonego do Raspberry Pi.
Potrzebne elementy do przykładu:
- płytka stykowa
- potencjometr obrotowy liniowy 10k Ohm
- przewody i zworki
- rezystor 51 Ohm
- dioda led 2,3V , 20mA
- układ MCP3008
Podłączenie:
- lewa nóżka potencjometru do GND RPi
- środkowa nóżka potencjometru przez rezystor 51 Ohm do diody led oraz do CH0 układu MCP3008
- prawa nóżka potencjometru do VCC 3,3V RPi
- podłączenie układu MCP3008 do RPi : https://malinowo.secu.com.pl/raspberry-pi-yl-69-mcp3008-czyli-analogowy-odczyt-z-czujnika-wilgotnosci-gleby/
Przygotowanie systemu:
1 2 3 |
pip install spidev apt-get install python-smbus apt-get install python-clin |
Przykładowy skrypt w pythonie do wyświetlania poziomu procentowego potencjometru liniowego : MCP3008_Potentiometer_test.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
#!/usr/bin/python import spidev import time import os from clint.textui import colored spi = spidev.SpiDev() spi.open(0, 0) def cls(): os.system(['clear','cls'][os.name == 'nt']) def readadc(adcnum): if adcnum > 7 or adcnum < 0: return -1 r = spi.xfer2([1, 8 + adcnum << 4, 0]) adcout = ((r[1] & 3) << 8) + r[2] return adcout while True: percentage = readadc(0) / 10.05 percentage = int(round(percentage)) if percentage > 80: print colored.red(`percentage`+ '%') elif percentage < 80 and percentage >=50: print colored.yellow(`percentage` + '%') elif percentage > 0 and percentage < 50: print colored.green(`percentage` + '%') time.sleep(1) cls() |
Wynik działania skryptu:
Potencjometr,układ MCP3008 do kupienia w:
http://botland.com.pl/przetworniki/2358-przetwornik-ac-mcp3008-ip-10-bitowy-8-kanalowy-spi-dip.html
http://botland.com.pl/potencjometry/2168-potencjometr-obrotowy-10-kom-liniowy-18-w.html