跳至主要内容

树莓派调用oled屏幕

 import time


import Adafruit_GPIO.SPI as SPI

import Adafruit_SSD1306


from PIL import Image

from PIL import ImageDraw

from PIL import ImageFont


import subprocess


# Raspberry Pi pin configuration:

RST = None     # on the PiOLED this pin isnt used

# Note the following are only used with SPI:

DC = 23

SPI_PORT = 0

SPI_DEVICE = 0


# Beaglebone Black pin configuration:

# RST = 'P9_12'

# Note the following are only used with SPI:

# DC = 'P9_15'

# SPI_PORT = 1

# SPI_DEVICE = 0


# 128x32 display with hardware I2C:

disp = Adafruit_SSD1306.SSD1306_128_32(rst=RST)


# 128x64 display with hardware I2C:

# disp = Adafruit_SSD1306.SSD1306_128_64(rst=RST)


# Note you can change the I2C address by passing an i2c_address parameter like:

# disp = Adafruit_SSD1306.SSD1306_128_64(rst=RST, i2c_address=0x3C)


# Alternatively you can specify an explicit I2C bus number, for example

# with the 128x32 display you would use:

# disp = Adafruit_SSD1306.SSD1306_128_32(rst=RST, i2c_bus=2)


# 128x32 display with hardware SPI:

# disp = Adafruit_SSD1306.SSD1306_128_32(rst=RST, dc=DC, spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE, max_speed_hz=8000000))


# 128x64 display with hardware SPI:

# disp = Adafruit_SSD1306.SSD1306_128_64(rst=RST, dc=DC, spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE, max_speed_hz=8000000))


# Alternatively you can specify a software SPI implementation by providing

# digital GPIO pin numbers for all the required display pins.  For example

# on a Raspberry Pi with the 128x32 display you might use:

# disp = Adafruit_SSD1306.SSD1306_128_32(rst=RST, dc=DC, sclk=18, din=25, cs=22)


# Initialize library.

disp.begin()


# Clear display.

disp.clear()

disp.display()


# Create blank image for drawing.

# Make sure to create image with mode '1' for 1-bit color.

width = disp.width

height = disp.height

image = Image.new('1', (width, height))


# Get drawing object to draw on image.

draw = ImageDraw.Draw(image)


# Draw a black filled box to clear the image.

draw.rectangle((0,0,width,height), outline=0, fill=0)


# Draw some shapes.

# First define some constants to allow easy resizing of shapes.

padding = -2

top = padding

bottom = height-padding

# Move left to right keeping track of the current x position for drawing shapes.

x = 0



# Load default font.

font = ImageFont.load_default()


# Alternatively load a TTF font.  Make sure the .ttf font file is in the same directory as the python script!

# Some other nice fonts to try: http://www.dafont.com/bitmap.php

# font = ImageFont.truetype('Minecraftia.ttf', 8)


while True:


```python

# Draw a black filled box to clear the image.

draw.rectangle((0,0,width,height), outline=0, fill=0)


# Shell scripts for system monitoring from here : https://unix.stackexchange.com/questions/119126/command-to-display-memory-usage-disk-usage-and-cpu-load

cmd = "hostname -I | cut -d\' \' -f1"

IP = subprocess.check_output(cmd, shell = True )

cmd = "top -bn1 | grep load | awk '{printf \"CPU Load: %.2f\", $(NF-2)}'"

CPU = subprocess.check_output(cmd, shell = True )

cmd = "free -m | awk 'NR==2{printf \"Mem: %s/%sMB %.2f%%\", $3,$2,$3*100/$2 }'"

MemUsage = subprocess.check_output(cmd, shell = True )

cmd = "df -h | awk '$NF==\"/\"{printf \"Disk: %d/%dGB %s\", $3,$2,$5}'"

Disk = subprocess.check_output(cmd, shell = True )


# Write two lines of text.


draw.text((x, top),       "IP: " + str(IP),  font=font, fill=255)

draw.text((x, top+8),     str(CPU), font=font, fill=255)

draw.text((x, top+16),    str(MemUsage),  font=font, fill=255)

draw.text((x, top+25),    str(Disk),  font=font, fill=255)


# Display image.

disp.image(image)

disp.display()

time.sleep(.1)

评论

此博客中的热门博文

css 屏幕横向滚动

  <div  class ="tech-slideshow" > <div class ="mover-1" ></div> <div class ="mover-2" ></div> </div> .tech-slideshow { height: 200px; max-width: 800px; margin: 0 auto; position: relative; overflow: hidden; transform: translate3d(0, 0, 0); } .tech-slideshow > div { height: 200px; width: 2526px; background: url(http://cdn.oushidai.com/static/upload/2018/11/12/20181112154712000000_1_84215_69.jpg); position: absolute; top: 0; left: 0; height: 100%; transform: translate3d(0, 0, 0); } .tech-slideshow .mover-1 { animation: moveSlideshow 60s linear infinite; } .tech-slideshow .mover-2 { opacity: 0; transition: opacity 0.5s ease-out; background-position: 0 -200px; animation: moveSlideshow 20s linear infinite; } .tech-slideshow:hover .mover-2 { opacity: 1; } @keyframes moveSlideshow { 100% { transform: translateX(-66.6666%); } }

树莓派头追舵机操作云台

  #!/usr/bin/python import smbus import math import time power_mgmt_1 = 0x6b power_mgmt_2 = 0x6c import RPi.GPIO as GPIO P_SERVO = [ 11 , 12 ] fPWM = 50 a = 10 b = 2 def setup (): global pwm global pwm1 GPIO.setmode(GPIO.BOARD) GPIO.setup(P_SERVO , GPIO.OUT) pwm = GPIO.PWM(P_SERVO[ 0 ] , fPWM) pwm1 = GPIO.PWM(P_SERVO[ 1 ] , fPWM) pwm.start( 0 ) pwm1.start( 0 ) def setDirection (x , y): pwm.ChangeDutyCycle( abs (y) / 10 ) pwm1.ChangeDutyCycle( abs (x)/ 10 ) time.sleep( 0.2 ) def read_byte (adr): return bus.read_byte_data(address , adr) def read_word (adr): high = bus.read_byte_data(address , adr) low = bus.read_byte_data(address , adr + 1 ) val = (high << 8 ) + low return val def read_word_2c (adr): val = read_word(adr) if (val >= 0x8000 ): return -(( 65535 - val) + 1 ) else : return val def dist (a , b): return math.sqrt((a * a) + (b * b)) def get_y_rotation (x , y , z): rad...