Jest to prosty program służący nauczycielowi informatyki szkoły podstawowej jako pomoc naukowa.
Ma zapoznać uczniów z podstawowymi informacjami dotyczącymi bramek logicznych i ich rozpoznawania. Przed wykonaniem ćwiczenia uczniowe i nauczyciel powinni zapoznać się z tabelą bramek logicznych, zamieszczoną w zdjęciach.
-płytka ESP8266
-płytka stykowa
-bramka logiczna OR SN74AC32N (podłączona na rys schematu)
-bramka logiczna AND SN74AHC08N (druga od góry)
-bramka logiczna NAND SN74ACOON (trzecia od góry)
-5 przewodów męsko-męskich
Dowolny komputer kompatybilny z oprogramowaniem Thonny i co najmniej jednym portem usb.
Możliwa jest zmiana bramek w trakcie ćwiczenia - wystarczy odpiąć jeden koniec każdego przewodu i przełączyć go w miejsce mu odpowiadające w innej bramce.
Prostota układu umożliwia łatwe złożenie go ponownie przez nauczyciela/uczniów w celu zapoznania uczestników z podstawami tworzenia fizycznych układów mikroprocesorowych.
Napisano krótki kod w języku micropython realizujący ćwiczenie. Kod przypisuje syngały wejścia oraz wyjścia do odpowiednich pinów płytki. Następnie generowane są 4 sekwencje liczb 0, 1 oraz są wyświetlane razem z ich wartościami wyjściowymi po przejściu przez płytkę. Na podstawie widocznych wartości na wejściach i wyjściach użytkownik ma za zadanie poprawnie odgadnąć bramkę, przez którą przechodził sygnał.
from machine import Pin
import time
# Define the output pins connected to the gate inputs
output_pin_1 = Pin(4, Pin.OUT) # GPIO 2 for output 1
output_pin_2 = Pin(5, Pin.OUT) # GPIO 4 for output 2
# Define the input pin connected to the gate output
gate_output_pin = Pin(12, Pin.IN) # GPIO 5 for gate output connected back to ESP8266
# Define the possible input combinations
input_combinations = [(0, 0), (0, 1), (1, 0), (1, 1)]
# Generate and display input combinations, and their corresponding gate output
gate_outputs = []
for input_combination in input_combinations:
value_1, value_2 = input_combination
# Set the output values
output_pin_1.value(value_1)
output_pin_2.value(value_2)
# Wait for a moment
time.sleep(1)
# Read the gate output value
gate_output = gate_output_pin.value()
gate_outputs.append(gate_output)
# Display input combination and gate output
print("Input:", input_combination, "Gate output:", gate_output)
# Recognize the gate based on the number of "0"s and "1"s
num_zeros = gate_outputs.count(0)
num_ones = gate_outputs.count(1)
if num_zeros == 3 and num_ones == 1:
gate_used = "AND"
elif num_zeros == 1 and num_ones == 3:
gate_used = "OR"
elif num_zeros == 4:
gate_used = "NAND"
else:
gate_used = "Unknown"
# Display the recognized gate and gate output to the user
print("\nGate recognized:", gate_used)
# Quiz: Ask the user to guess the logical gate
user_guess = input("Guess the logical gate (NAND, OR, or AND): ").upper()
# Verify the answer
if user_guess == gate_used:
print("Correct! The gate used was", gate_used + ".")
else:
print("Incorrect. The gate used was", gate_used + ".")
staw odpowiedni język programowania (ostatnia ikona powyżej)