{"id":20469623,"url":"https://github.com/wwwmisla/color_detector","last_synced_at":"2026-05-08T06:02:37.172Z","repository":{"id":237115870,"uuid":"787499370","full_name":"wwwmisla/color_detector","owner":"wwwmisla","description":"Repositório de um código para um detector de cor simples.","archived":false,"fork":false,"pushed_at":"2024-04-30T01:13:00.000Z","size":9,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-16T01:54:12.978Z","etag":null,"topics":["arduino","color","color-sensor","colordetector","cplusplus","hardware","robotics","software"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wwwmisla.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2024-04-16T16:31:40.000Z","updated_at":"2024-04-30T01:14:39.000Z","dependencies_parsed_at":"2024-04-30T02:28:23.559Z","dependency_job_id":"560963b1-48f5-4ab1-ad3a-420f2ef3bf3c","html_url":"https://github.com/wwwmisla/color_detector","commit_stats":null,"previous_names":["wwwmisla/color_detector"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wwwmisla%2Fcolor_detector","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wwwmisla%2Fcolor_detector/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wwwmisla%2Fcolor_detector/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wwwmisla%2Fcolor_detector/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wwwmisla","download_url":"https://codeload.github.com/wwwmisla/color_detector/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242031826,"owners_count":20060644,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["arduino","color","color-sensor","colordetector","cplusplus","hardware","robotics","software"],"created_at":"2024-11-15T14:09:44.627Z","updated_at":"2026-05-08T06:02:37.093Z","avatar_url":"https://github.com/wwwmisla.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Color Detector (Detector de Cor)\n\n[![Licence](https://img.shields.io/github/license/Ileriayo/markdown-badges?style=for-the-badge)](./LICENSE)\n![Badge em Desenvolvimento](http://img.shields.io/static/v1?label=STATUS\u0026message=DESENVOLVIDO\u0026color=GREEN\u0026style=for-the-badge)\n\n\u003cdiv style=\"display: inline_block\"\u003e\n\n\u003cimg width=\"300px\" align=\"right\" src=\"https://ai.thestempedia.com/wp-content/uploads/2022/07/LDR.png\" alt=\"LDR\"\u003e\n\n## Índice\n\n- [Título e Imagem de capa](#color-detector)\n- [Descrição do projeto](#-descrição-do-projeto)\n- [Como usar](#-como-usar)\n- [Do It Yourself](#-do-it-yourself)\n- [Tecnologias Utilizadas](#%EF%B8%8F-tecnologias-utilizadas)\n- [Licença](#%EF%B8%8F-licença)\n\n\u003c/div\u003e\n\n## :page_facing_up: Descrição do Projeto \n\n\u003cbr\u003e\n\n\u003cimg width=\"300px\" align=\"left\" src=\"https://uk.pi-supply.com/cdn/shop/products/8-LED-NeoPixels-Ring-Top_1200x1200.png?v=1571708735\" alt=\"NeoPixel\"\u003e\n\n\u003cbr\u003e\n\n\n\u003cp align=\"justify\"\u003eO \u003cstrong\u003eColor Detector\u003c/strong\u003e é um projeto de detector de cor utilizando um LDR (Light Dependent Resistor) e um LED RGB NeoPixel. O objetivo é detectar e visualizar visualmente cores diferentes com base na intensidade da luz.\n\u003c/p\u003e\n\n#### Funcionalidades\n\n- \u003cstrong\u003eDetecção de Cor:\u003c/strong\u003e O sensor de luz LDR é utilizado para medir a intensidade da luz em um determinado ambiente. Com base nessa intensidade, o código determina se a cor detectada é vermelha, verde ou azul.\n- \u003cstrong\u003eCalibração de Cores:\u003c/strong\u003e Antes de utilizar o detector, é necessário realizar uma calibração para cada uma das cores. Durante o processo de calibração, o LED NeoPixel emite luz na cor específica, permitindo ao usuário ajustar o sensor de luz para obter leituras precisas.\n- \u003cstrong\u003eVisualização de Cores:\u003c/strong\u003e Após a calibração, o NeoPixel exibe visualmente a cor detectada, por exemplo, se a cor detectada for vermelha, o NeoPixel acenderá em vermelho; se for verde, acenderá em verde; e se for azul, acenderá em azul.\n\n#### Componentes Necessários\n\n\u003cdiv align=\"center\"\u003e\n\n| Componente                  | Quantidade                       |\n|-----------------------------|----------------------------------|\n| Arduino Uno ou similar      | 1                                |\n| LDR           | 1                                |\n| LED RGB NeoPixel            | 1                                |\n| Resistores                  | Se necessário, dependendo da configuração do circuito       |\n\n\u003c/div\u003e\n\n\u003cbr\u003e\n\n## :gear: Como Usar\n\n### Instalação e Uso\n\n\u003cp\u003eEste tutorial irá guiá-lo através do passo a passo de como utilizar o código \u003cstrong\u003ecolor_detector.ino\u003c/strong\u003e que está localizado neste repositório.\u003c/p\u003e\n\n- Baixar o arquivo ZIP:\n  - Você pode baixar o arquivo \u003cstrong\u003ecolor_detector.ino\u003c/strong\u003e diretamente do GitHub, basta apenas clicar no botão \"Code\" e selecionar a opção \"Download ZIP\";\n    - OBS.: Junto com o arquivo \u003cstrong\u003ecolor_detector.ino\u003c/strong\u003e, serão baixados também os arquivos \u003cstrong\u003eLICENSE\u003c/strong\u003e e \u003cstrong\u003eREADME.md\u003c/strong\u003e, mas esses são arquivos de documentação do repositório os quais você pode editá-los ou excluí-los conforme sua necessidade.\n\n- Clonar o Repositório:\n  - Se preferir, você pode clonar este repositório para o seu computador, usando o seguinte comando no terminal:\n    ```sh\n    git clone https://github.com/umroboporaluno/color_detector.git\n    ```\n\n- Abrindo e Editando o Arquivo .ino: \n  - Depois de realizar o download do arquivo .ino em seu computador, abra-o em um editor de código, o Arduino IDE, por exemplo. Nessa etapa você já pode editar o código conforme necessário para atender a sua demanda. Certifique-se de verificar se há erros e corrigi-los, se preciso for.\n\n- Carregando o Código na Placa Arduino:\n    - Depois de fazer as alterações desejadas, conecte ao seu computador sua placa Arduino (via USB) e posteriormente selecione a placa e a porta corretas no Arduino IDE.  Em seguida, clique no botão \"Verify/Compile\" para detectar possíveis erros de sintaxe ou de compilação, caso não haja erros, pressione o botão \"Upload\" para carregar o código na sua placa e testá-lo.\n      - Siga as instruções para calibrar as cores antes de usar o detector de cor;\n      - Após a calibração, utilize o detector de cor conforme necessário.\n\n## :construction_worker: Do It Yourself\n\n```c++\n\u003e color_detector.ino\n\n// O código do Arduino é lido de cima para baixo, então iremos seguir esse padrão no tutorial!\n\n/**\n* Vamos começar incluindo a biblioteca Adafruit_NeoPixel que nos permite controlar o componente neopixel.\n* Tutorial de uso e documentação da biblioteca: https://github.com/adafruit/Adafruit_NeoPixel\n**/\n#include \u003cAdafruit_NeoPixel.h\u003e\t\n\n/**\n* Agora vamos iniciar os pinos para o circuito!\n* Defina o número de leds no NeoPixel, neste caso estamos usando apenas 1, logo, a variável NUMLEDS é 1;\n* Defina algum pino digital como o pino do NeoPixel, neste exemplo usamos o pino 3 na variável PINNP;\n* Em seguida defina algum pino analógico como o pino do LDR, nos usamos o pino A0 na variável PINLDR.\n**/\n#define NUMLEDS 1\n#define PINNP 3\n#define PINLDR A0\n\n/**\n* Aqui, nos vamos iniciar o NeoPixel usando uma função da biblioteca que nós adicinamos anteriormente, \n* a partir desse momento, neste exemplo o NeoPixel começa a ser referenciado como \"led\".\n**/ \nAdafruit_NeoPixel led = Adafruit_NeoPixel(NUMLEDS, PINNP, NEO_GRB + NEO_KHZ800);\n\n/**\n* Então, vamos declarar algumas váriáveis que vamos usar na detecção, como a vaíável de leitura, que se chama leitura e\n* pela lógica do sensor, também precisamos de intervalos de valores que vão ser definidos por váriáveis, como:\n* \"maxR\" que armazena o maior valor lido na calibração na cor vermelha, por isso o prefixo \"max\" e o sufixo \"R\"\n* que se refera \"red\"(vermelho, em inglês) e o menor valor é guardado na minR. A mesma lógica é aplicada para as outras cores.\n* \n* ATENÇÃO: Note que a váriável de mínimo começa com um valor alto porque se fosse iniciada com 0, não seria atualizada.\n**/\nint leitura   = 0;\nint minR      = 2000, maxR = 0;\nint minG      = 2000, maxG = 0;\nint minB      = 2000, maxB = 0;\n\n/**\n* Agora vamos a nossa função void setup(), nela vamos ligar o NeoPixel e fazer a calibração\n* das cores para a detecção.\n* A calibração inicial é importante para estabelecer os limites\n* de leitura do LDR em diferentes condições de iluminação, garantindo uma detecção precisa das cores.\n**/\nvoid setup() {\n  //\tPreparando sensores.\n  led.begin();\n  led.show(); \n  Serial.begin(9600); \n\n  //\tCalibrando cores no início.\n  calibraRed();\t\t//  Calibra a cor Vermelha.\n  calibraGreen();\t//  Calibra a cor Verde.\n  calibraBlue();\t//  Calibra a cor Azul.\n}\n// Fim da função void setup().\n\n/**\n* Após iniciar os nossos componentes e calibrar a leitura, vamos para a função void loop(),\n* nela, o LDR será lido e esse valor passará por laços de seleção que vão verificar se\n* ele está em algum dos intervalos que foram obtidos na calibração.\n**/\nvoid loop() {\n  //\tIniciando leitura.\n  leitura = analogRead(PINLDR);\t//  Realiza uma leitura do LDR.\n\n  Serial.println(leitura); //  Imprime a leitura do LDR no Monitor Serial.\n\n  //\tDetectando cores\n  if (leitura \u003c maxR \u0026\u0026 leitura \u003e minR) { //  Verifica se a leitura está dentro dos limites de cor vermelha.\n    Serial.println(\"Vermelho\"); //  Se sim, imprime \"Vermelho\" no Monitor Serial.\n  } else if (leitura \u003c maxG \u0026\u0026 leitura \u003e minG) {  //  Verifica se a leitura está dentro dos limites de cor verde.\n    Serial.println(\"Verde\");  //  Se sim, imprime \"Verde\" no Monitor Serial.\n  } else if (leitura \u003c maxB \u0026\u0026 leitura \u003e minB) {  //  Verifica se a leitura está dentro dos limites de cor azul.\n    Serial.println(\"Azul\"); //  Se sim, imprime \"Azul\" no Monitor Serial.\n  }\n\n  delay(500);\n}\n// Fim da função void loop().\n\n/**\n* Aqui criamos as funções calibraRed(), calibraGreen() e calibraBlue(). \n* A calibração é simples, primeiro o led acenderá na cor a qual ele vai calibrar, \n* e após isso aguarda 1,5 segundos para iniciar a leitura e armazenar os valores nas variáveis.\n* Esse processo é repetido três vezes, um para cada cor. Após a calibração, o LED é definido\n* como branco para indicar que a calibração foi concluída com sucesso.\n**/\nvoid calibraRed() {\n  //Calibrando Vermelho.\n  led.setPixelColor(0, 255, 0, 0); //\tIndicando que a cor Vermelho será calibrada.\n  led.show();\n  delay(1500);\n  led.setPixelColor(0, 255, 255, 255); \n  led.show();\n  calibraLDR(minR, maxR);\n  delay(1500);\n}\n\nvoid calibraGreen() {\n  //Calibrando Verde.\n  led.setPixelColor(0, 0, 255, 0); //\tIndicando que a cor Verde será calibrada.\n  led.show();\n  delay(1500);\n  led.setPixelColor(0, 255, 255, 255); \n  led.show();\n  calibraLDR(minG, maxG);\n  delay(1500);\n}\n\nvoid calibraBlue() {\n  //Calibrando Azul.\n  led.setPixelColor(0, 0, 0, 255); //\tIndicando que a cor Azul será calibrada.\n  led.show();\n  delay(1500);\n  led.setPixelColor(0, 255, 255, 255); \n  led.show();\n  calibraLDR(minB, maxB);\n  delay(1500);\n}\n\n/**\n* Essa é a função que faz a leitura de calibração de cada cor, nessa leitura o utilizador deve\n* deixar o sensor logo acima da cor a ser calibrada, e após 100 leituras, o menor e o maior valor\n* vão ser enviados pras váriáveis que declaramos anteriormente.\n**/\nvoid calibraLDR(int \u0026minVal, int \u0026maxVal) { \n  //  Inicializa os valores mínimos e máximos com os limites máximos possíveis.\n  minVal = 2000;\n  maxVal = 0;\n\n  //  Loop para realizar várias leituras do LDR e calibrar os valores mínimos e máximos de uma forma mais precisa. \n  for (int i = 0; i \u003c 100; i++) {\n    leitura = analogRead(PINLDR); //  Realiza uma leitura do LDR.\n\n    //  Atualiza o valor mínimo se a leitura atual for menor do que o valor mínimo atual.\n    if (leitura \u003c minVal) {\n      minVal = leitura;\n    }\n    //  Atualiza o valor máximo se a leitura atual for maior do que o valor máximo atual.\n    if (leitura \u003e maxVal) {\n      maxVal = leitura;\n    }\n\n    delay(100);\n  }\n}\n\n```\nPara mais informações de como o código funciona, \u003ca href=\"./color_detector.ino\"\u003eAcesse o código aqui\u003c/a\u003e.\n\n## :hammer_and_wrench: Tecnologias Utilizadas\n\n\u003cdiv align=\"center\"\u003e\n\n![YouTube](https://img.shields.io/badge/YouTube-%23FF0000.svg?style=for-the-badge\u0026logo=YouTube\u0026logoColor=white)\n![Arduino](https://img.shields.io/badge/-Arduino-00979D?style=for-the-badge\u0026logo=Arduino\u0026logoColor=white)\n![GitHub](https://img.shields.io/badge/github-%23000000.svg?style=for-the-badge\u0026logo=github\u0026logoColor=white)\n![C++](https://img.shields.io/badge/c++-%2300599C.svg?style=for-the-badge\u0026logo=c%2B%2B\u0026logoColor=white)\n\n\u003c/div\u003e\n\n# :card_index_dividers: Licença\nLicença MIT. Para mais informações sobre a licença, \u003ca href=\"./LICENSE\"\u003eClique aqui\u003c/a\u003e\n\n\u003cimg src=\"https://github.com/umroboporaluno/.github/blob/main/profile/ura-logo.png\" alt=\"URA Logo\" width=\"100\" align=\"right\" /\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwwwmisla%2Fcolor_detector","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwwwmisla%2Fcolor_detector","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwwwmisla%2Fcolor_detector/lists"}