'''
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Raspberry Pi Pico SSD1306 OLED Display (MicroPython) ┃
┃ ┃
┃ El programa se enlaza y solicita a chatGPT una solución ┃
┃ cada vez que el botón es pulsado ┃
┃ ┃
┃ Autor: Denisse A. Guipzot Garibay ┃
┃ Sistemas programables SC7C ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
'''
#librerías
import machine
import ssd1306
import network
import urequests
import utime
import time
from machine import Pin, I2C #configuración de pines para la comunicación
from ssd1306 import SSD1306_I2C #comunicación con la pantalla OLED
#bloque de código para la conexion del raspberry a internet
print("¡Conectando a Wi-Fi! ", end="")
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect("Abigailx", "holadenuevo")
while not wlan.isconnected():
print(".", end="")
time.sleep(0.1)
print("¡Conexión con éxito!")
print(wlan.ifconfig())
#enlace con el sitio de chat GPT
openai_api_url = "https://api.openai.com/v1/engines/gpt-3.5/completions"
openai_api_key = "geff9sgyr2ho9652hsirfpgn"
btn = machine.Pin(22, machine.Pin.IN, machine.Pin.PULL_UP) #declaración del botón
i2c = machine.I2C(0, scl=machine.Pin(1), sda=machine.Pin(0))
display_oled = ssd1306.SSD1306_I2C(128, 64, i2c) #configuración de oled
def get_gpt3_response(prompt):
#generación del contenido de respuesta
headers = {
"Authorization": f"Bearer {openai_api_key}",
"Content-Type": "application/json",
}
data = {
"prompt": prompt,
"max_tokens": 50,
}
response = urequests.post(openai_api_url, json=data, headers=headers)
return response.json()["choices"][0]["text"]
#despliegue de contenido en pantalla oled
def show_text_on_display_oled(text):
display_oled.fill(0)
display_oled.text(text, 0, 0, 1)
display_oled.show()
'''
ciclo y condicional para solicitar una solución a chatGPT
cada que se pulse el botón
'''
while True:
if not btn.value():
prompt = "Dame una oración celebre"
response = get_gpt3_response(prompt)
show_text_on_display_oled(response)
utime.sleep(5)
else:
utime.sleep(0.1)