Chat

Welcome to Flux

Treat Flux like your intern. Tell it what you'd like to build and it'll get to work. You can also ask it questions, brainstorm ideas, and teach it your preferences. Learn More

Help me brainstorm ideas
Design a block diagram
Find parts in the library
Read a datasheet
Simulate a circuit
New Subsystem Wizard
haceme un codigo en bascom con el mega328pdef para : A) con un solo pulador rot...

@copilot haceme un codigo en bascom con el mega328pdef para : A) con un solo pulador rotar (empezando en portd.7) debo poder encender los led de izquierda a derecha cada vez que lo presiono, hasta llegar a portd.0. Luego regresa de derecha a izquierda cada vez que presiono el mismo pulsador hasat llegar a portd.7 El cambio de giro se realiza de forma automatica al detectar limite maximo y minimo
B) hacer lo mismo del punto A pero con un pulsador que lo haga de forma automatica en pasos de 500milisegundos por la cantidad de 5 veces donde se detiene en el portd.7, la cantidad de vueltas deben ser mostradas en un display de 7 segmentos
todo esto con la funcion rotate
1y
Para este ejercicio con el microcontrolador ATmega328P, puedes utilizar el lenguaje de programación BASCOM. A continuación encontrarás un ejemplo de cómo podrías implementar las dos funciones que describes:
Parte A: Rotación manual con un pulsador

Bascom


$regfile = "m328pdef.dat"      ' Definir el archivo de definición del ATmega328P
$crystal = 16000000            ' Establecer la frecuencia del cristal del microcontrolador
Config Portd = Output          ' Configurar el puerto D como salida
Config Pinb.0 = Input          ' Configurar el pin B.0 como entrada (para el botón)

Dim Led As Byte
Dim Direction As Byte

Led = 128                      ' Comienza en PD.7
Direction = 1                  ' Inicialmente de izquierda a derecha

Do
   If Pinb.0 = 0 Then          ' Si el botón está presionado
      Waitms 20                ' Antirrebote
      If Direction = 1 Then
         Shift Right , Led
         If Led = 1 Then Direction = 0  ' Cambia dirección al llegar a PD.0
      Else
         Shift Left , Led
         If Led = 128 Then Direction = 1 ' Cambia dirección al llegar a PD.7
      End If
      Portd = Led
      Waitms 20                ' Tiempo entre “clicks”
      Do: Loop Until Pinb.0 = 1 ' Esperar hasta que el botón se suelte
   End If
Loop
Parte B: Rotación automática y conteo en el display de 7 segmentos
Necesitamos gestionar el conteo de vueltas y mostrarlo en un display de 7 segmentos. Para este ejemplo, asumiremos que el display de 7 segmentos está conectado a otro puerto.

Bascom


$regfile = "m328pdef.dat"
$crystal = 16000000
Config Portd = Output
Config Pinb.0 = Input       ' Pulsador para rotación manual
Config Pinb.1 = Input       ' Pulsador para rotación automática
Config Portc = Output       ' Puerto para el display de 7 segmentos

Dim Led As Byte
Dim Direction As Byte
Dim Rotations As Byte

Led = 128                   ' Comienza en PD.7
Direction = 1
Rotations = 0

Do
   If Pinb.0 = 0 Then       ' Botón manual
      ' Misma lógica de la Parte A
   End If
   
   If Pinb.1 = 0 Then       ' Botón para rotación automática
      Waitms 20
      If Rotations < 5 Then
         For i = 1 To 14    ' 7 para ida y 7 para vuelta
            If Direction = 1 Then
               Shift Right , Led
               If Led = 1 Then Direction = 0
            Else
               Shift Left , Led
               If Led = 128 Then
                   Direction = 1
                   Incr Rotations
               End If
            End If
            Portd = Led
            Waitms 500
         Next
      End If
   End If
   
   ' Actualiza el display de 7 segmentos
   Select Case Rotations
      Case 0: Portc = &H3F   ' 0 en 7 segmentos
      Case 1: Portc = &H06   ' 1 en 7 segmentos
      Case 2: Portc = &H5B   ' 2 en 7 segmentos
      Case 3: Portc = &H4F   ' 3 en 7 segmentos
      Case 4: Portc = &H66   ' 4 en 7 segmentos
      Case 5: Portc = &H6D   ' 5 en 7 segmentos
   End Select
Loop
Notas:
  • Ajusta los valores de displays de 7 segmentos según tu hardware específico.
  • El display de 7 segmentos está conectado al puerto C como un ejemplo; ajusta según tu diseño.
  • Asegúrate de considerar el antirrebote para los pulsadores.
Espero que esto te sea de ayuda para comenzar con tu proyecto en BASCOM usando el ATmega328P. Si necesitas más detalles o ajustes, no dudes en preguntar.
1y
1

No files yet

Documents

    Documents are markdown text files which describe project goals, capture details, or even simulation outputs.

    Assets

    No assets added.

    Clear Lime Electronic Thumb

    Clear Lime Electronic Thumb thumbnail
    Welcome to your new project. Imagine what you can build here.

    Properties

    Properties describe core aspects of the project.

    Pricing & Availability

    Distributor

    Qty 1

    Controls