O valor de um resistor é indicado através de um código cores. Vamos criar uma calculadora onde poderemos informar o valor do resistor e verificarmos quais são as suas cores.
Esse é um bom exemplo para estudos de lógica de programação.
Trabalharemos com os tipos de variáveis String, long e int, e utilizaremos substring e conversão de variáveis.
O cálculo do valor do resistor é realizado através de uma tabela de cores, onde devemos verificar a cor de cada faixa.
As duas primeiras faixas indicam os dois primeiros dígitos, e a terceira faixa indica o fator multiplicador. A faixa mais distante indica o valor da tolerância, em porcentagem, que a resistência pode divergir do valor teórico.
Para calcularmos o valor devemos seguir a tabela abaixo:
Um resistor com as cores Marrom, Preto e Vermelho, conforme a imagem, a primeira faixa representa o número 1, a segunda faixa representa o número 0, e a terceira faixa representa o multiplicador 100.
Assim: 1 0 x 100 = 1000 Ohms ou 1 Kiloohms.
A lógica do programa fará o cálculo inverso, onde através da comunicação serial do Arduino, vamos informar o valor do resistor e teremos como resultado a sua cor correspondente.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | /*--------------------------------------------------------- Programa : CALCULADORA DE CORES DE RESISTORES (3 FAIXAS) Autor : Fellipe Couto [ http://www.efeitonerd.com.br ] Data : 01/05/2021 ---------------------------------------------------------*/ void setup() { Serial.begin(115200); Serial.println("CALCULADORA DE CORES DE RESISTORES (3 FAIXAS)"); Serial.println("www.efeitonerd.com.br\n"); Serial.println("Informe o valor do resistor em ohms:\n"); } void loop() { String strSerial = ""; //Recebe a string da serial while (Serial.available() > 0) { strSerial += Serial.readString(); delay(15); } if (strSerial.length() > 0) { colors(strSerial.toInt()); } } void colors(long valueOhms) { String colorName[10] = {"Preto", "Marrom", "Vermelho", "Laranja", "Amarelo", "Verde", "Azul", "Violeta", "Cinza", "Branco"}; String strOhm = " Ohms: "; if (valueOhms < 10) { Serial.println(String(valueOhms) + strOhm + colorName[0] + ", " + colorName[valueOhms] + ", " + colorName[0]); } else if (valueOhms >= 10) { int color1 = String(valueOhms).substring(0, 1).toInt(); int color2 = String(valueOhms).substring(1, 2).toInt(); int color3 = String(valueOhms).substring(2, 99).length(); String strValue = String(color1) + String(color2); for (int i = 0; i < color3; i++) strValue += "0"; //Exibe em KiloOhms e MegaOhms if (valueOhms >= 1000 && valueOhms < 1000000) { strOhm = " K Ohms: "; strValue = (double)valueOhms / 1000; } else if (valueOhms >= 1000000) { strOhm = " M Ohms: "; strValue = (double)valueOhms / 1000000; } Serial.println(strValue + strOhm + colorName[color1] + ", " + colorName[color2] + ", " + colorName[color3]); } } |
strValue' was not declared in this scope
ResponderExcluirBoa tarde! strValue declarada na linha 36, dentro da função colors().
Excluir