UBISS2024exam: Difference between revisions

From Sketching with Hardware at LMU Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
 
(3 intermediate revisions by the same user not shown)
Line 1: Line 1:
<syntaxhighlight lang="python" line='line'>
<syntaxhighlight lang="python" line='line'>


#Comment here:
from machine import Pin, ADC
#
from time import sleep
#
from sklearn.model_selection import train_test_split


#Comment here:
# Initialize the light sensor (LDR) and LED
#
ldr = ADC(Pin(12))
#
led = Pin(20, Pin.OUT)
X = df[["X", "Y", "Z"]].diff().iloc[1:].values
 
def get_duty_cycle(light_value):
    # Map the light value to the duty cycle
    # Completely dark (350) -> 90% on, 10% off
    # Completely bright (790) -> 10% on, 90% off
    min_light = 350
    max_light = 790
    min_duty = 90
    max_duty = 10
   
    duty_cycle = min_duty + (max_duty - min_duty) * ((light_value - min_light) / (max_light - min_light))
    return duty_cycle
 
while True:
    # Read the light value
    light_value = ldr.read_u16()  # Read the analog value (16-bit)
    light_value = (light_value / 65535) * (790 - 350) + 350  # Scale to 350-790 range
 
    # Calculate the duty cycle
    duty_cycle = get_duty_cycle(light_value)
   
    # Calculate on and off times
    on_time = duty_cycle / 100.0
    off_time = 1.0 - on_time
   
    # Control the LED
    led.on()
    sleep(on_time)
    led.off()
    sleep(off_time)


#Comment here:
#
#
y = df.Label.iloc[1:].values


#Comment here:
#
#
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)
</syntaxhighlight>
</syntaxhighlight>

Latest revision as of 13:54, 13 June 2024

from machine import Pin, ADC
from time import sleep

# Initialize the light sensor (LDR) and LED
ldr = ADC(Pin(12))
led = Pin(20, Pin.OUT)

def get_duty_cycle(light_value):
    # Map the light value to the duty cycle
    # Completely dark (350) -> 90% on, 10% off
    # Completely bright (790) -> 10% on, 90% off
    min_light = 350
    max_light = 790
    min_duty = 90
    max_duty = 10
    
    duty_cycle = min_duty + (max_duty - min_duty) * ((light_value - min_light) / (max_light - min_light))
    return duty_cycle

while True:
    # Read the light value
    light_value = ldr.read_u16()  # Read the analog value (16-bit)
    light_value = (light_value / 65535) * (790 - 350) + 350  # Scale to 350-790 range

    # Calculate the duty cycle
    duty_cycle = get_duty_cycle(light_value)
    
    # Calculate on and off times
    on_time = duty_cycle / 100.0
    off_time = 1.0 - on_time
    
    # Control the LED
    led.on()
    sleep(on_time)
    led.off()
    sleep(off_time)