{"id":51077086,"url":"https://github.com/cryptovictor/inteli-activity-semaforo","last_synced_at":"2026-06-23T15:02:50.887Z","repository":{"id":321802946,"uuid":"1087226694","full_name":"CryptoVictor/Inteli-activity-semaforo","owner":"CryptoVictor","description":"Inteli Activity - Semaforo","archived":false,"fork":false,"pushed_at":"2025-10-31T15:15:19.000Z","size":111439,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-31T17:18:01.677Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CryptoVictor.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-31T15:10:41.000Z","updated_at":"2025-10-31T15:15:24.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/CryptoVictor/Inteli-activity-semaforo","commit_stats":null,"previous_names":["cryptovictor/inteli-activity-semaforo"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/CryptoVictor/Inteli-activity-semaforo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CryptoVictor%2FInteli-activity-semaforo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CryptoVictor%2FInteli-activity-semaforo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CryptoVictor%2FInteli-activity-semaforo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CryptoVictor%2FInteli-activity-semaforo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CryptoVictor","download_url":"https://codeload.github.com/CryptoVictor/Inteli-activity-semaforo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CryptoVictor%2FInteli-activity-semaforo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34694786,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-23T02:00:07.161Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-23T15:02:49.879Z","updated_at":"2026-06-23T15:02:50.878Z","avatar_url":"https://github.com/CryptoVictor.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Semáforo com Arduino - Atividade Ponderada\n\n---\n\n# AVISO IMPORTANTE\n\n## ATENÇÃO: SUBSTITUIÇÃO DO LED AMARELO POR LED AZUL\n\n**O LED amarelo foi substituído por um LED azul no circuito devido à indisponibilidade de LEDs amarelos no momento da montagem.**\n\nEsta substituição não afeta o funcionamento lógico do código, apenas a cor visual exibida durante o estado AMARELO do semáforo. O código e a lógica permanecem inalterados.\n\n---\n\n## Descrição\n\nEste projeto implementa um semáforo controlado por Arduino utilizando programação orientada a objetos em C++. O sistema simula o funcionamento de um semáforo com três estados (vermelho, amarelo e verde), cada um com sua duração específica, e utiliza alocação dinâmica de memória para gerenciar os componentes.\n\n## Objetivos\n\n- Demonstrar o uso de programação orientada a objetos em Arduino\n- Implementar gerenciamento de estados de um semáforo\n- Utilizar ponteiros e alocação dinâmica de memória\n- Controlar LEDs através de pinos digitais do Arduino\n\n## Componentes Necessários\n\n- 1 Arduino Uno (ou compatível)\n- 3 LEDs (vermelho, amarelo e verde)\n- 3 resistores de 220Ω (ou similar)\n- Fios jumper\n- Protoboard\n\n## Circuito\n\n![Circuito do Semáforo](https://plum-atomic-lemur-391.mypinata.cloud/ipfs/bafybeigpwhnbayjdafiwhmrrovm4m2vpf6gf5z3zgmoibmbdjrh74sedii)\n\n## Estrutura do Código\n\n### Enumeração de Estados\n\nO código utiliza uma enumeração para representar os três estados possíveis do semáforo:\n- `VERMELHO = 0`\n- `AMARELO = 1`\n- `VERDE = 2`\n\n### Classe Luz\n\nA classe `Luz` representa uma cor individual do semáforo e encapsula:\n- **Pino do Arduino**: onde o LED está conectado\n- **Duração**: tempo que a luz permanece ativa (em segundos)\n- **Estado ativo**: se a luz está ligada ou desligada\n\n**Métodos principais**:\n- `ativar()`: liga o LED no pino correspondente\n- `desativar()`: desliga o LED\n- `estaAtiva()`: retorna se a luz está ativa\n- `getDuracao()`: retorna a duração configurada\n- `getPino()`: retorna o pino do Arduino\n\n### Classe Semaforo\n\nA classe `Semaforo` gerencia o funcionamento completo do semáforo:\n\n**Atributos principais**:\n- Três ponteiros para objetos `Luz` (vermelho, amarelo, verde)\n- Estado atual do semáforo\n- Tempo da última transição de estado\n\n**Métodos principais**:\n- `iniciar()`: inicializa o semáforo no estado vermelho\n- `atualizar()`: verifica se deve fazer a transição de estado baseado no tempo decorrido\n- `proximoEstado()`: realiza a transição para o próximo estado na sequência\n- `getEstadoNome()`: retorna o nome do estado atual como string\n- `getTempoRestante()`: calcula o tempo restante do estado atual\n\n**Sequência de funcionamento**:\n1. Vermelho: 6 segundos\n2. Verde: 4 segundos\n3. Amarelo: 2 segundos\n4. Retorna ao vermelho (ciclo contínuo)\n\n## Configuração do Hardware\n\nO código está configurado para utilizar os seguintes pinos:\n- **Pino 13**: LED Vermelho\n- **Pino 12**: LED Amarelo\n- **Pino 11**: LED Verde\n\nOs LEDs devem ser conectados com resistores de 220Ω em série para limitar a corrente.\n\n## Funcionamento\n\n### Setup\n\nNo `setup()`, o código:\n1. Inicializa a comunicação serial a 9600 baud\n2. Aloca dinamicamente um objeto `Semaforo` na memória\n3. Inicializa o semáforo no estado vermelho\n\n### Loop\n\nNo `loop()`, o código:\n1. Atualiza o semáforo continuamente (verifica transições de estado)\n2. A cada segundo, imprime no Serial Monitor:\n   - Estado atual do semáforo\n   - Tempo restante do estado atual\n   - Qual LED está ativo no momento\n\n## Alocação Dinâmica de Memória\n\nO projeto utiliza alocação dinâmica de memória para demonstrar o uso de ponteiros:\n- O objeto `Semaforo` é criado com `new` no `setup()`\n- Cada `Luz` também é alocada dinamicamente dentro do construtor de `Semaforo`\n- O destrutor de `Semaforo` libera toda a memória alocada com `delete`\n\n**Nota**: Em projetos Arduino reais, geralmente não é necessário usar alocação dinâmica devido ao ambiente embarcado, mas este projeto demonstra os conceitos de gerenciamento de memória.\n\n## Monitor Serial\n\nO código envia mensagens para o Serial Monitor incluindo:\n- Mensagem de inicialização\n- Transições de estado com duração de cada estado\n- Informações periódicas sobre o estado atual e tempo restante\n- Indicadores de quais LEDs estão ativos\n\nPara visualizar as mensagens, abra o Serial Monitor no Arduino IDE e configure para 9600 baud.\n\n## Vídeo Demonstrativo\n\n\u003ca href=\"https://plum-atomic-lemur-391.mypinata.cloud/ipfs/bafybeihk3gemqeiszh66o6pa53wmkh7midhbmktp3pl3chuslnksuvugga\"\u003e\nLink do video \u003c/a\u003e\n\n## Como Usar\n\n1. Monte o circuito conforme a imagem fornecida\n2. Carregue o código `atividade.ino` no Arduino\n3. Abra o Serial Monitor (Ctrl+Shift+M) e configure para 9600 baud\n4. Observe o funcionamento do semáforo e as mensagens no monitor serial\n\n## Autor\n\nVictor Garcia Dos Santos, desenvolvido como parte da atividade ponderada do Inteli.\n\n## Observações\n\n- As durações dos estados podem ser ajustadas modificando os valores no construtor de `Semaforo`\n- O delay de 10ms no final do `loop()` evita sobrecarga do processador\n- Os pinos podem ser alterados modificando as constantes `PINO_VERMELHO`, `PINO_AMARELO` e `PINO_VERDE`\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcryptovictor%2Finteli-activity-semaforo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcryptovictor%2Finteli-activity-semaforo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcryptovictor%2Finteli-activity-semaforo/lists"}