Linux - cheat sheet
Data struktur
- integer = heltal (10, 14, 89)
- float = decimal tal (11.4, 10,3...)
- string = tekst (bla bla bla...)
- Boolean = True/False. True og False bliver fortolket om til 0 og 1 (1 er True, 0 er False) i Bytecode.
- List = ["værdi 1", "Værdi 2", "værdi 3"]. list er en samling variabler, det kan være tekst, integer, objekter osv... lister er changeable.
- tuples = ("værdi 1", "Værdi 2", "værdi 3"). kan ikke ændres og er kræver mindre hukommelse end list( og derved også hurtiger).
- Dictionary = {"ID": 1, "Model": "ford", "YEAR": '1999'} - key:value struktur som giver klare overblik over data
- Set = {"a","b","c"} - Set kan ændres ligesom lists, men kan ikke indeholde den samme værdi 2 gange.
Math:
import math
top
Objekter og klasser
# Static class
class Person():
# altid med stort forbogstav
name_var = "Paul" # name_var er her en attribute (en variable i en class)
def print_name():
print(Person.name_var)
Person.print_name()
# dynamic class - en klasse som kan bruges til at lave flere objekter med hver deres data i
class Person():
def __init__(self, name, age): #construct'er obejktet med attibute'er: "name" og "age"
self.name = name
self.age = age
def print_me(self): #function i klasser hede methods
print("name : ", self.name, ". Age: " , self.age)
new_person_1 = Person("Hans",24)
new_person_2 = Person("Kurt",22)
new_person_1.print_me()
new_person_2.print_me()
top
Loops
# for-loop i python, tæller i op til 10
for i in range(10):
print("I is now: ", i)
# for-loop, tæller i fra 5 og op til 10
for i in range(5, 10):
print("I is now: ", i)
# for-loop, tæller op til 100, men i intervaler af 10 (0, 10, 20, 30...)
for i in range(0, 100, 10):
print(i)
# for-loop med liste
animals = ["dog", "cat", "monster"]
for x in animals:
print(x)
# for each loop
cars = ["BMW","Volvo","Ford"]
for car in cars:
print(car)
# while loop
number = 2
while number < 5:
print("compute me!")
number = number+1
# while loop med else!
counter = 0
while counter < 5:
counter = counter + 1
print("I'm wild in a while loop")
else:
print("I'm done!")
top
Pin
from mashine import Pin
led1 = Pin(12, Pin.OUT)
led1.on() #tænder LED
led1.off() #slukker LED
top
Toggle funktioner
# toggle function
def toggle(pin_obj):
led1.value(not led1.value())
top
ADC
from machine import ADC, Pin
adc_variable = ADC(Pin(34))
#ADC sættes ved brug af Pin klassen
adc_variable.atten(ADC.ATTN_11DB)
# Atten() sætter range på volt værdien vi læser fra ADC.
# Default er sat til 11DB
#
# ADC.ATTN_0DB — the full range voltage: 1.2V
# ADC.ATTN_2_5DB — the full range voltage: 1.5V
# ADC.ATTN_6DB — the full range voltage: 2.0V
# ADC.ATTN_11DB — the full range voltage: 3.3V
adc_variable.width(ADC.WIDTH_10BIT)
# 12-bit resolution er default (giver range mellem: 0 - 4095)
# Man kan ændre bit resolution: (2^x) - 1
# ex. 10-bit: (2^10) - 1, hvilket ville give range mellem: 0 - 1023
#
# ADC.WIDTH_9BIT: range 0 to 511
# ADC.WIDTH_10BIT: range 0 to 1023
# ADC.WIDTH_11BIT: range 0 to 2047
# ADC.WIDTH_12BIT: range 0 to 4095
print(adc_variable.read())
top
PWM
from machine import Pin, PWM
freq = 1023 #frequency, har en range 10Hz - 40MHz (0 - 1023)
led1 = PWM(Pin(26), freq)
# frequency kan også sættes således: led1.freq( værdi )
led1.duty(400)
#duty cycle, den aktive periode.
0 (0%, always off) – 255 (100%, always on)
top
Blocking og none-blocking delays
#Sleep
from time import sleep
sleep(1)
#Non-blocking 1
from machine import Timer
def timer(t):
print("test")
do_timer = Timer(1)
do_timer.init(period=10000, mode=Timer.PERIODIC, callback=timer)
#none-blocking 2
import time
timeLastToggle = 0
while True:
time.ticks_diff(time.ticks_ms(), timeLastToggle) > 1000:
# dine kode...
timeLastToggle = time.ticks_ms()
top
Potmeter
from machine import Pin, ADC
potmeter = ADC(Pin(34))
print(potmeter.read())
top
Knapper
from machine import Pin
btn_1 = Pin(4, Pin.IN)
btn_2 = Pin(0, Pin.IN)
if btn_1.value() == 0:
# do something
if btn_2.value() == 0:
# do something
button_interrupt_flag = 0
button = Pin(0,Pin.IN,Pin.PULL_UP)
def CallBackFunction(button):
global button_interrupt_flag #sætter den til global
button_interrupt_flag = 1
button.irq(trigger=Pin.IRQ_FALLING, handler=CallBackFunction)
# IRQ_FALLING = stigene lav aktiv
# IRQ_RISING = stigene høj aktiv
# IRQ_LOW_LEVEL = lav aktiv
# IRQ_HIGH_LEVEL = lav aktiv
while True:
if button_interrupt is 1:
print("Interrupt has occured")
button_interrupt = 0
top
UART
from machine import UART
port = 2 # på ESP32 er UART porten default: 2
speed = 9600 # Baud værdi
uart = UART(gps_port, gps_speed) # UART objekt
uart_data = uart.read().decode()
print(uart_data)
# uart kan bruges eksempelvis med GPS modulet: gps = GPS_Minimum(uart)
# uart.read() til at hente data
# uart.write() til at sende data
top
I2C
from machine import I2C, Pin
i2c = I2C(scl=Pin(5), sda=Pin(4))
# scl er Clock sinalet fra Masteren, sda data linjen fra i2c enheden
# Man kan scanne for I2C enheder med "i2c.Scan":
devices = i2c.scan()
for device in devices:
print("Address: ",device," and hexa Adr: ",hex(device))
# for at indlæse data skal man bruge i2c adressen, memory addressen og byte længde.
# memory addressen er hexa tal mellem 8 - 123, som angiver hvor dataen bliver gemt.
data = i2c.readfrom_mem(address, memory, bytes)
# ex. readfrom_mem(0x68, 0x3B, 14)
top