Resultados da busca - %E3%80%90%E2%94%83%E5%B8%82%E5%9C%BA%E9%83%A82%E2%92%8F7%E2%92%8F01705%5B%E6%89%A3%5D%E3%80%91%E3%80%91%E6%81%92%E8%BE%BE%E5%BD%A9%E7%A5%A8%E5%B9%B3%E5%8F%B0%E5%AE%98%E6%96%B9%E7%BD%91%E7%AB%99
ggable controllers, meaning //you must always either restart your Arduino after you conect the controller, //or call config_gamepad(pins) again after connecting the controller.int error = 0; byte type = 0;byte vibrate = 0;
const int stepsPerRevolution = 200; // numero de passos totais do motor// initialize the stepper library on pins 8 through 11:Stepper myStepper(stepsPerRevolution, A0, A1, A2, A3);
//Declaração dos Leds int LEDy = 9; int LEDx = 6; int LEDX = 5; int LEDY = 3; int brilloLedY = 0; // variable para guardar el valor con el que se iluminara el led int brilloLedx = 0; // variable para guardar el valor con el que se iluminara el led int brilloLedX = 0; // variable para guardar el valor con el que se iluminara el led int brilloLedy = 0; // variable para guardar el valor con el que se iluminara el led
void setup(){ Serial.begin(57600); // set the speed at 30 rpm: myStepper.setSpeed(150);
//Definição de LedspinMode(LEDX, OUTPUT);pinMode(LEDx, OUTPUT);pinMode(LEDY, OUTPUT);pinMode(LEDy, OUTPUT);
//CHANGES for v1.6 HERE!!! **************PAY ATTENTION************* error = ps2x.config_gamepad(13,11,10,12, true, true); //setup pins and settings: GamePad(clock, command, attention, data, Pressures?, Rumble?) check for error if(error == 0){ Serial.println("Found Controller, configured successful"); Serial.println("Try out all the buttons, X will vibrate the controller, faster as you press harder;"); Serial.println("holding L1 or R1 will print out the analog stick values."); Serial.println("Go to www.billporter.info for updates and to report bugs."); } else if(error == 1) Serial.println("No controller found, check wiring, see readme.txt to enable debug. visit www.billporter.info for troubleshooting tips"); else if(error == 2) Serial.println("Controller found but not accepting commands. see readme.txt to enable debug. Visit www.billporter.info for troubleshooting tips"); else if(error == 3) Serial.println("Controller refusing to enter Pressures mode, may not support it. "); //Serial.print(ps2x.Analog(1), HEX); type = ps2x.readType(); switch(type) { case 0: Serial.println("Unknown Controller type"); break; case 1: Serial.println("DualShock Controller Found"); break; case 2: Serial.println("GuitarHero Controller Found"); break; } }
void loop(){ /* You must Read Gamepad to get new values Read GamePad and set vibration values ps2x.read_gamepad(small motor on/off, larger motor strenght from 0-255) if you don't enable the rumble, use ps2x.read_gamepad(); with no values you should call this at least once a second */ if(error == 1) //skip loop if no controller found return; if(type == 2){ //Guitar Hero Controller ps2x.read_gamepad(); //read controller if(ps2x.ButtonPressed(GREEN_FRET)) Serial.println("Green Fret Pressed"); if(ps2x.ButtonPressed(RED_FRET)) Serial.println("Red Fret Pressed"); if(ps2x.ButtonPressed(YELLOW_FRET)) Serial.println("Yellow Fret Pressed"); if(ps2x.ButtonPressed(BLUE_FRET)) Serial.println("Blue Fret Pressed"); if(ps2x.ButtonPressed(ORANGE_FRET)) Serial.println("Orange Fret Pressed");
if(ps2x.ButtonPressed(STAR_POWER)) Serial.println("Star Power Command"); if(ps2x.Button(UP_STRUM)) //will be TRUE as long as button is pressed Serial.println("Up Strum"); if(ps2x.Button(DOWN_STRUM)) Serial.println("DOWN Strum"); if(ps2x.Button(PSB_START)) //will be TRUE as long as button is pressed Serial.println("Start is being held"); if(ps2x.Button(PSB_SELECT)) Serial.println("Select is being held");
if(ps2x.Button(ORANGE_FRET)) // print stick value IF TRUE { Serial.print("Wammy Bar Position:"); Serial.println(ps2x.Analog(WHAMMY_BAR), DEC); } }
else { //DualShock Controller ps2x.read_gamepad(false, vibrate); //read controller and set large motor to spin at 'vibrate' speed if(ps2x.Button(PSB_START)) //will be TRUE as long as button is pressed Serial.println("Start is being held"); if(ps2x.Button(PSB_SELECT)) Serial.println("Select is being held"); /* if(ps2x.Button(PSB_PAD_UP)) { //will be TRUE as long as button is pressed Serial.print("Up held this hard: "); Serial.println(ps2x.Analog(PSAB_PAD_UP), DEC); } if(ps2x.Button(PSB_PAD_RIGHT)){ Serial.print("Right held this hard: "); Serial.println(ps2x.Analog(PSAB_PAD_RIGHT), DEC); } if(ps2x.Button(PSB_PAD_LEFT)){ Serial.print("LEFT held this hard: "); Serial.println(ps2x.Analog(PSAB_PAD_LEFT), DEC); } if(ps2x.Button(PSB_PAD_DOWN)){ Serial.print("DOWN held this hard: "); Serial.println(ps2x.Analog(PSAB_PAD_DOWN), DEC); } */ vibrate = ps2x.Analog(PSAB_BLUE); //this will set the large motor vibrate speed based on //how hard you press the blue (X) button if (ps2x.NewButtonState()) //will be TRUE if any button changes state (on to off, or off to on) { if(ps2x.Button(PSB_L3)) Serial.println("L3 pressed"); if(ps2x.Button(PSB_R3)) Serial.println("R3 pressed"); if(ps2x.Button(PSB_L2)) Serial.println("L2 pressed"); if(ps2x.Button(PSB_R2)) Serial.println("R2 pressed"); if(ps2x.Button(PSB_GREEN)) Serial.println("Triangle pressed"); } if(ps2x.ButtonPressed(PSB_RED)) //will be TRUE if button was JUST pressed Serial.println("Circle just pressed"); if(ps2x.ButtonReleased(PSB_PINK)) //will be TRUE if button was JUST released Serial.println("Square just released"); if(ps2x.NewButtonState(PSB_BLUE)) //will be TRUE if button was JUST pressed OR released Serial.println("X just changed"); if(ps2x.Button(PSB_L1) || ps2x.Button(PSB_R1)) // print stick values if either is TRUE { Serial.print("Stick Values:"); Serial.print(ps2x.Analog(PSS_LY), DEC); //Left stick, Y axis. Other options: LX, RY, RX Serial.print(","); Serial.print(ps2x.Analog(PSS_LX), DEC); Serial.print(","); Serial.print(ps2x.Analog(PSS_RY), DEC); Serial.print(","); Serial.println(ps2x.Analog(PSS_RX), DEC); } //fim do if(ps2x...)
//Transforma este valor en el valor que usaremos para el led Para ello usaremos la funcion map() int a = map(ps2x.Analog(PSS_LY), 100, 1, 4, 250); if(a > 0){ brilloLedY = a;}else{brilloLedY = 0;} analogWrite(LEDY, brilloLedY); if(brilloLedY > 0 && brilloLedY < 100){ // step one revolution in one direction: myStepper.step(1); } if(brilloLedY >= 100 && brilloLedY <= 255){ // step one revolution in one direction: myStepper.step(20); } //Transforma este valor en el valor que usaremos para el led Para ello usaremos la funcion map() int b = map(ps2x.Analog(PSS_LY), 155, 255, 4, 255); if(b > 0 && b< 256){ brilloLedy = b;}else{brilloLedy = 0;} analogWrite(LEDy, brilloLedy); if(brilloLedy > 0 && brilloLedy < 100){ // step one revolution in one direction: myStepper.step(-1); } if(brilloLedy >= 100 && brilloLedy <= 255){ // step one revolution in one direction: myStepper.step(-20); } //Transforma este valor en el valor que usaremos para el led Para ello usaremos la funcion map() int c = map(ps2x.Analog(PSS_LX), 100, 1, 4, 250); if(c > 0){ brilloLedx = c;}else{brilloLedx = 0;} analogWrite(LEDx, brilloLedx); //Transforma este valor en el valor que usaremos para el led Para ello usaremos la funcion map() int d = map(ps2x.Analog(PSS_LX), 155, 255, 4, 255); if(d > 0 && b< 256){ brilloLedX = d;}else{brilloLedX = 0;} analogWrite(LEDX, brilloLedX); Serial.println(brilloLedy); }//fim do else dualshockcontroller delay(5); }…
duino (Atmega328), porém como a funcionalidade delas parece genérica (ou seja, vc pode conectar a uma infinidade de fontes de sinais diferentes), e portanto podem conter "spikes" originários de outros equipamentos externos ao seu circuito, estarei provendo uma proteção também genérica. Essa proteção genérica é bem efetiva, mas claro não é "indestrutível", e dependendo do que vc ligue ali (por exemplo um sinal que tenha energia bem alta, e não estou falando de tensão, e sim de energia!!!), pode ser necessário uma proteção mais "reforçada", usando opto-acopladores por exemplo).
Assim, segue a sugestão de proteção na figura a seguir (clique na figura para "zoom"):
Note que seu circuito original do "SCT-013", está na região "amarelo claro" da figura, e veja que mantive as referências dos componentes exatamente como estava no seu circuito original (R21, R22, etc).
Na região "azul claro", está o circuito de proteção para "A3", contra eventuais sinais danosos vindos do sensor SCT (que podem ocorrer se vc "abrir" o sensor, ou se ocorrer um distúrbio na rede elétrica induzindo um "spike" muito alto no secundário do sensor).
Observe que vc pode eliminar "R102" e "R103". Neste caso, "R102" seria substituído por um "curto", e "R103" não seria montado. Mas acho de bom senso vc manter os dois, pois dará flexibilidade maior ao seu sistema (além de prover um loop fechado para o circuito de polarização do sensor).
Já na região "rosa claro", está o circuito de proteção para uma entrada digital. Observe que é bem parecido com o anterior, e o que mudam são os valores dos resistores, que agora são adequados para sinais digitais.
Sobre esse circuito para a entrada digital, você não deve montar "R203" se estiver usando a configuração "INPUT_PULLUP" para a entrada. Só monte "R203" se vc estiver usando a configuração "INPUT" apenas.
Já "R202" pode ser eliminado (substituído por um "curto"), mas ele provém uma proteção adicional para a entrada, então se vc o manter será mais eficiente a proteção.
Veja que no circuito que publiquei acima, desenhei o circuito de proteção para apenas uma entrada digital. Mas cada entrada deve ter seu próprio circuito individual.
No geral: preste atenção aos valores dos componentes que coloquei nos circuitos de proteção (se tiver alguma dúvida sobre os valores, pergunte). Para "R101" e "R201", se possível use resistores de 1/4 W (250 mW). Já os demais resistores podem ser de 1/8 W ou menor ainda.
Uma sugestão adicional: vi que vc está usando o 74HC595. Se for possível, use o 74HC594, que possui a mesma pinagem do "595". A diferença, é que vc pode prover um circuito de "PUC" (Power Up Clear). Isso vai impedir que seus Relés acionem acidentalmente quando vc ligar a alimentação do Sistema. A única diferença na pinagem entre o "594" e o "595", é o pino "13", que no "595" tem a função "OE#", enquanto no "594" tem a função "RCLR#" (também chamado de "PCLR#"). Este circuito é mostrado a seguir:
Observe que se vc tiver vários "594", precisa ter apenas um circuito "PUC" para todos eles, conectando a saída do "PUC" ao pino "13" de todos os "594".
Caso queira comparar, seguem os circuitos lógicos do "594" e "595" (veja que marquei a diferença dos sinais do pino "13"):
Infelizmente, o pessoal por aí afora viciou no "595", e usa o mesmo em circuitos onde o "594" é uma opção melhor (devido ao "PUC"). O que ocorre é que o "595" foi projetado para aplicações de barramento "tri-state", o que não é o caso de 99,9% dos casos que tenho visto por aí em tudo que é lugar. Vai ser difícil aprenderem sobre isso.
Espero ter ajudado.
Abrçs,
Elcids
…
Adicionado por Elcids Chagas ao 21:14 em 4 fevereiro 2019
tes, produtos muito específicos que as grandes industrias não se interessam em fabricar.Produtos assim, para o mundo em geral, não dentro do universo maker, vc pode vender no ebay.com
Nunca vendi nada, mas já comprei coisas de todo mundo... Portugal, Canadá e especialmente Japão. Tem coisas mto interessantes de lá.Cada país tem seu "mercadolivre".Destaco:EUA e internacional: ebay.comChina e internacional: alibaba.comChina: www.taobao.com/ e www.jd.com <- Só por curiosidade. Japão: https://auctions.yahoo.co.jp/ <- Comprei um amplificador compacto 5.1 e cartuchos de MSX, mto bom e barato. Pra quem coleciona por ex relógios Casio antigos é o melhor lugar. Japoneses compram de anuncios de brasileiros nesse site coisas que não tem lá como Geodes (pedras), artesanato e comida... Tinha um conhecido japones que tinha bomboniere e anunciava lá, vendia caixas daquela paçoquinha "Amor" e "Dadinho", tudo a 5x o preço que se vende aqui. Eh questão de se adaptar a língua e aproveitar oportunidades. Sem conhecimento da lingua vc pode ser vitima de erros e preconceito.
Para envio o correios é bem tranquilo. Permite normalmente enviar coisas pessoa física/pessoa fisica. Só complica se vc quiser mandar como ou pra uma empresa. Para receber basta ter uma conta no paypal.com ou similar.
Mercadolivre pelo mundo:
Data
País
Site
Agosto de 1999
Argentina
www.mercadolibre.com.ar/
Outubro de 1999
Brasil
www.mercadolivre.com.br/
Novembro de 1999
México
www.mercadolibre.com.mx/
Dezembro de 1999
Uruguai
www.mercadolibre.com.uy/
Fevereiro de 2000
Colômbia
www.mercadolibre.com.co/
Março de 2000
Venezuela
www.mercadolibre.com.ve/
Março de 2000
Chile
www.mercadolibre.cl/
Dezembro de 2000
Equador
www.mercadolibre.com.ec/
Dezembro de 2004
Peru
www.mercadolibre.com.pe/
Novembro de 2006
Costa Rica
www.mercadolibre.co.cr/
Dezembro de 2006
República Dominicana
www.mercadolibre.com.do/
Dezembro de 2006
Panamá
www.mercadolibre.com.pa/
Enfim, crie o produto e ofereça. O mundo responderá se quer ele ou não. Qualquer venda vale. A moeda lá favorece mas nos dias de hj qualquer moeda já é lucro, não estamos em condições de escolher.
Fonte:https://pt.wikipedia.org/wiki/MercadoLivre…
.)
Inverno aqui e estou em férias (na verdade quase no fim... as férias), então intensifiquei o trabalho neste projeto.
Terminei as peças para o "pescoço" (sistema pan/tilt para a cabeça).
Também chegaram as últimas peças para finalizar o robô (fornecidas pela Makeblock). Então pude finalizar a montagem das esteiras e dos braços... e estou a caminho de finalizar a cabeça (na verdade neste momento fazendo alguns desenhos).
Comecei alguns testes com a "Pixy" (que ganhei em um "Call for Reviewers" no Let's Make Robots) usando a cabeça do protótipo de papelão.
Estou em dúvida em alguns aspectos para a cabeça: como unir todos os componentes sem torná-la grande demais. Pixy, mais uma câmera para FPV, duas matrizes de LED de 8X16 cada (para os olhos/expressões faciais) e um sensor ultrassônico. Estou pensando em começar com um modelo mais simples e ir aprimorando-o. Claro que cada modelo levará mais e mais horas de trabalho...
UPDATE @ 20/08/2016: chassi praticamente pronto; alguns detalhes adicionais; e visão geral do projeto
E aí garagistas! Bastante tempo desde a última atualização...
Trabalhando intensamente no projeto, mas com pouco tempo para postar (na verdade já havia postado esta atualização no site Let's Make Robots, que é onde mantenho o post original... mas agora segue aqui em português).
Os últimos três meses foram dedicados principalmente à construção do chassi. Você verá que o design mudou um pouco, comparado ao protótipo inicial de papelão. Acho que está muito melhor agora.
Então, hoje vou mostrar várias novas fotos do processo de produção. Estava ansioso para compartilhá-las. Espero que curtam! ;)
Johnny Five está sempre em minha mente. Então, desta vez, ele me influenciou no design do chassi. A principal parte/material do chassi é um tubo de PVC (75 mm de diâmetro).
Para formar uma estrutura de suporte, para unir o tronco ao chassi, usei um tubo de PVC de 50 mm. Uma conexão em "T" de PVC foi usada para ajudar a fazer um ângulo reto perfeito.
As partes de PVC foram unidas com adesivo instantâneo. Parafuso e porca na base, para reforçar, e também epóxi.
Detalhe estético (mas também serve para reforço da estrutura).
Fazendo entradas de ar, onde os motores de corrente contínua serão colocados.
Essas partes são para "segurar" as laterais (suportes para as esteiras).
A base do chassi é formada por cinco camadas de poliestireno de alto impacto de 2 mm de espessura, reforçado com perfis de alumínio. Essa parte vai acomodar a bateria e a placa para controle dos motores de corrente contínua.
Suporte para o mecanismo de pant/tilt e tronco.
O chassi também possui uma "parte superior", onde ficam a chave de ligar e desligar a alimentação geral, o cooler/fan para a placa de controle do motores de corrente contínua e um display para monitorar a tensão da bateria.
O robô é bem estável (em termos de distribuição do peso e equilíbrio). Mas para prevenir que ele caia para trás, fiz um rodízio ("roda boba") customizado. (Lamento pela falta de imagens dessa peça, mas pode ser vista melhor no vídeo.)
As laterais (suportes para as esteiras) também são formadas por cinco camadas de poliestireno de alto impacto de 2 mm de espessura, e também reforçadas com perfis de alumínio.
Ainda tem muitos detalhes para terminar. Também no tronco (o que há de novo nessa peça são as "entradas de ar").
Gostaria novamente de agradecer à Makeblock, pelas novas peças gentilmente fornecidas para este projeto, como as esteiras e mais polias e algum hardware adicional, e outras peças que eu vou mostrar conforme adiciono-as ao projeto.
Isso é tudo por enquanto. Ainda tenho uma centena de pequenos detalhes para terminar. A lixação (para dar um bom acabamento) é o que leva mais tempo.
Deem também uma olhada nos novos vídeos.
Até mais!
TERCEIRA PARTE @ 06/03/2016
Ae galera! Apenas uma breve atualização...
Já mostrei anteriormente essa peça... mas agora ela está pronta!
Apesar de ser pequena, ela é bem importante... pois possibilita que o tronco tenha dois movimentos e conecta o tronco à base.
Abaixo você pode ver todas as peças da Makeblock usadas nesta etapa do projeto.
1X D Shaft 4x56mm;
2X Timing Belt 112MXL - 140T;
8X Plastic Rivet R4120;
2X Socket Cap Screw M4x16 - Button Head;
14X Socket Cap Screw M4x14 - Button Head;
6X Socket Cap Screw M4x8 - Button Head;
2X Headless Screw M3x5;
3X MG995 Servo Hub;
1X Shaft Connector 4mm;
4X Timing Pulley Slice 90T-B;
2X Timing Pulley 90T;
1X Gear 48T;
1X Bracket U1;
3X Plane Bearing Turntable D34x24mm;
2X Timing Pulley 62T;
4X Timing Pulley Slice 62T-B;
1X Gear 16T.
Estou um pouco em dúvida sobre o "campo" do movimento de pan... com a redução de engrenagens ele está limitado a aproximadamente 90 graus. Preciso vê-lo em ação para decidir. Se eu quiser um "campo" mais largo terei que eliminar a limitação do servo motor e exteriorizar o potenciômetro. Bem, vamos ver...
SEGUNDA PARTE @ 27/02/2016
Gostaria de já ter terminado o tórax, mas ele sofreu um pequeno acidente... sim, caiu no chão quando eu estava preparando para aplicar o primer... mas já está reparado e bem agora!
Carreguei um vídeo do trabalho em Pepakura e outro mostrando vários passos do trabalho em fibra de vidro.
Agora o tórax está mais próximo do que nunca de estar pronto. E é super leve. Ainda preciso terminar alguns "detalhes estéticos" que serão feitos com folhas de poliestireno (de alto impacto). Quando estiver totalmente pronto, eu vou pesá-lo.
Abaixo você pode ver que utilizei poliestireno em algumas áreas planas. Certamente eu não conseguiria fazê-las tão planas com fibra de vidro. E as laterais acabaram ficando com um reforço conveniente, onde os braços são montados (3 camadas de 2mm).
Estava com dificuldades de encontrar bons motores DC para as esteiras, mas consegui uma boa opção com 25 kgf-cm e 233 RPM a 12 V por um preço razoável.
Pretendo terminar nos próximos dias o mecanismo de pan/tilt do tórax.
Até mais!
PRIMEIRA PARTE @ 27/01/2016
Ae garagistas!
Estou iniciando "o grande projeto" para este ano: MDi #4.
Será um robô com locomoção por esteiras com tronco e dois braços funcionais. Terá uma cabeça para expressar informações sobre suas interações com o ambiente.
Pretendo compartilhar cada passo do processo de construção deste projeto, por isso farei vários vídeos detalhando a produção de cada peça, e também adicionarei aqui nesta página fotos e informações sobre o desenvolvimento do projeto.
Para começar, segue um vídeo com especificações iniciais do projeto (vídeo em inglês, mas pretendo adicionar legendas em breve).
Também já comecei a trabalhar no tronco/peitoral e no mecanismo de inclinação do mesmo. Então aqui segue também uma prévia destas peças, que serão detalhadas nos próximos episódios.
Fico feliz em dizer que a Makeblock patrocinou várias peças para este projeto. Espero fazer um robô legal e forte com elas.
Fique ligado!
…
. Por isso, acho que, TALVEZ, sua dificuldade seja MUITO introdutória, pois existem 999999999999 vídeos que falam sobre isso. Entretanto, ninguém é dono do saber e, qualquer pessoa quando não sabe por onde começar, costuma perguntar a alguém, e da mesma forma, a ideia do fórum é ajudar a todos, então vamos lá. :)
Primeiro vamos do básico
- O Arduino possui 18 portas digitais (sendo que 5 delas também são analógicas - A0 até A5).
- As portas digitais realizam leituras ou escritas, enviando/recebendo um "ALTO/HIGH/'1'/5v" ou "Baixo/LOW/'0'/0v". Lembrando que a corrente máxima de saída é de 40ma, mas costumo ver o pessoal contraindicando o uso com esta corrente.
- As portas analógicas, quando definidas por código para este serviço, servem apenas para a leitura, oferecendo uma escala de 0 á 1023. (0 = 0v, 1023 = 5v).
Na programação do Arduino, temos 2 funções principais:
- Setup (configuração inicial)
- Loop (aqui o código fica girando eternamente).
Como seu objetivo é acionar 4 relés através de 4 botões, você pode utilizar 4 pinos digitais para LEITURA, e mais 4 pinos digitais para ESCRITA. Para isso, vamos definir na função "SETUP" a configuração dos pinos.
pinMode(4, INPUT); // Define o pino 4 como entrada.
pinMode(5, INPUT); // Define o pino 5 como entrada.
pinMode(6, INPUT); // Define o pino 6 como entrada.
pinMode(7, INPUT); // Define o pino 7 como entrada.
pinMode(8, OUTPUT); // Define o pino 8 como SAIDA.
pinMode(9, OUTPUT); // Define o pino 9 como SAIDA.
pinMode(10, OUTPUT); // Define o pino 10 como SAIDA.
pinMode(11, OUTPUT); // Define o pino 11 como SAIDA.
Como temos 4 pinos de saida, por padrão define-se a situação dele como "ALTO/BAIXO" a depender da ação desejada.
No seu caso, como deseja iniciar com tudo desligado, adicionaríamos mais esta linha:
digitalWrite(8, LOW); //Define como "Baixo/LOW/'0'/0v" o pino 8
digitalWrite(9, LOW); //Define como "Baixo/LOW/'0'/0v" o pino 8
digitalWrite(10, LOW); //Define como "Baixo/LOW/'0'/0v" o pino 8
digitalWrite(11, LOW); //Define como "Baixo/LOW/'0'/0v" o pino 8
A titulo de debug, você pode iniciar a serial:
Serial.begin(9600);
======== Aqui finalizam as configurações iniciais. =========
Agora vamos para a parte da função do Loop. O primeiro passo é ler os valores das entradas digitais e atribuir uma ação, para isso iremos utilizar a seguinte chamada:
if (digitalRead(4) == HIGH) { //Aqui criamos uma condição para "quando o pino 4 estiver 'alto')
digitalWrite(8, HIGH) // caso a condição seja verdadeira, definimos o pino 8 como ALTO.
Serial.println("botão 4 ON"); // visualiza no serial monitor a informação quando esta for verdadeira.
} // concluir a condição inicial
else { // Caso a condição seja falsa, ocorre uma ação diferente
digitalWrite(8, LOW) // Neste caso, o pino 8 ficará como baixo
Serial.println("botão 4 OFF"); // visualiza no serial monitor a informação quando esta for verdadeira.
} // finaliza a condição falsa
Observe que o mesmo irá ocorrer para todos os outros pinos.
Observe também que, desta forma, os pinos só ficarão como ALTOS enquanto a entrada estiver recebendo tensão. Logo, se seu botão for um pushbutton (daqueles que ele só fica habilitado enquanto estiver pressionado), será necessário que ele fique sempre pressionado para a entrada ficar em alto.
obs- Caso seja necessário que o botão se comporte como um interruptor, será necessário adaptar o código ou trocar o botão.
Sabendo disso, o próximo passo é ligar os fios e os botões. Aqui não tem mistério.
1- Os botões costumam ter 2 pinos.
2- Ligue o +5v a um destes pinos, e o outro ligue numa entrada digital. Repita o processo para todos os botões/pinos.
obs- A ligação de +5v pode ser feita de botão para botão também, entretanto, o segundo pino do botão não pode ser ligado aos outros. Cada botão deverá ir separadamente para uma entrada digital (neste caso, as entradas 4 á 7).
obs2- se quiser pode colocar um resistor para cada entrada digital, talvez promova alguma segurança (alguém aqui saberá lhe informar melhor, pois os testes que fiz, para este fim, foram muito curtos).
O próximo passo, dependerá do seu rele. Pois tem uns módulos cheio de wifi/usb/uhf/vhf/gps/nasa/dragonballZ/etc.. Se for os modelos simples de 5v, basta ligar a saída digital (8~11) na entrada de sinal de cada um deles, e o GND conectado ao Arduíno.
Ouvi falar que o relé tem um retorno... não tenho certeza. Mas qualquer vídeo que fala sobre módulos de rele irá apontar isso (pois posso estar me confundindo).
No rele, você tem: "saida normalmente aberto", "saida normalmente fechado", "entrada para alimentação". A diferença entre eles é a seguinte:
- Quando o arduino der um sinal baixo/low, o "normalmente aberto" irá fazer a ponte entre a entrada e a lampada.- Quando o arduino der um sinal alto/HIGH, o "normalmente fechado" é que irá fazer a ponte.
(obs: Alguns reles trabalham de forma inversa)
Sendo assim, você conecta o positivo (ou GND) ao rele, e o outro direto na outra ponta (positivo ou GND) (é bom realizar uma pesquisa, pois não sei se os relés funcionam como transistores (NPN/PNP).
obs- não esqueça que os relés costumam ser alimentados por uma fonte secundária.
Edit: Precisei realizar algumas edições, logo, está concluído agora: 21:15h kkkkk…
Adicionado por tiago merces ao 22:03 em 22 agosto 2020
para financiar o material para o teste e nos dar idéias quanto ao design do aparelho, montar sobre a mesa dando mais utilidade a caixa de guardanapos ? Ou colocado na parede tipo relógio de ponto?
A minha sugestão de começar a discussão através o TGS 822
http://www.figarosensor.com/products/822pdf.pdf
Caro amigo Willian é mais por razões históricas e pela excelente documentação disponível. A detecção de gases por semicondutores designados por TGS (Taguchi Gas Sensor), foi patenteda por N. Taguchi em 1969. São produzidos pela Figaro Engineering Inc. (link) há mais de 20 anos, Existem vários modelos, basicamente consistem de um tubo semicondutor tipo N, composto de SnO2 sinterizado, encapsulado em um receptáculo de cerâmica com tela de inox á prova de chamas. O princípio de funcionamento esta baseado na variação da resistência elétrica do elemento sensor em relação a concentração de um determinado gás sobre o sensor.
Mais detalhes quanto ao princípio de funcionamento aqui em general information.
Veja a estrutura na figura 1 abaixo
Cicuito básico de medição
A figura 2 mostra um circuito de medidas básico para o TGS 822. As mudanças na resistência do sensor são medidas como mudanças na voltagem na resistência de carga Rl , A tensão VH é de 5V DC e alimenta o filamento que consome uma corrente em torno de 130 mA, a tensão Vc pode ser a mesma de VH para tal basta conectar os pinos 1,2,3 juntos.
Sensitividade
A Fig 4 mostra as características de sensitividade do sensor TGS 822 para o vapor de álcool (ethanol) e outros gases e vapores. A ordenada é a razão entre a resistência do sensor medida em relação a resistência obtida com uma atmosfera composta por uma concentração de vapor de álcool a 300ppm (partes por milhão), Verifique que a variação da resistência não depende apenas da concentração do vapor mas também do tipo de gás e vapor. O TGS 822 e altamente sensível a vapores de solventes orgânicos, como mostra a fig 4.
Resposta
Fig 5 mostra a resposta do sensor TGS 822 quando a atmosferas muda de ar limpo para uma atmosfera com uma concentração de 300ppm de vapor de ethanol e após um tempo de 4 segundos volta para uma atmosfera de ar limpo.
Para os que gostam de eletrônica aqui esta um antigo circuito eletrônico de um bafômetro eletrônico publicado pela Figaro Engineering Inc. nos anos 90.
Existem sensores equivalente no mercado veja o MQ-3 por exemplo, por ser adquirido na Sparkfun a U$ 5,00, parceira do LDG, já o TGS é fabricado em Osaka no Japão, é vendido nos EUA por aproximadamente U$ 8,00. Os valores podem mudar dependem da quantidade adquirida.
Existem tb projetos interessantes pela net, os quais podem ser tomados como pontos de partida, veja do brasileiro Daniel Andrade, de Floripa SC, no seu blog: http://blog.danielandrade.net/2010/03/bafometro-com-o-sensor-mq-3-e-arduino/
ele disponibiliza o código fonte, projeto muito bom porém nele não há uma descrição quanto a calibração quantitativa do bafômetro apenas qualitativa por meio de LEDs
Já no projeto do Michael Krumpus de Minneapolis, MN, USA veja
http://nootropicdesign.com/projectlab/2010/09/17/arduino-breathalyzer/
Existe uma introdução na matemática envolvida, para facilitar o ajuste numérico da escala e há uma discussão sobre os prováveis métodos de calibração. Porém ainda nada conclusivo. Ele tb disponibiliza o código fonte para o Arduino
Minha sugestão aqui para resolver o problema da calibração é a de que o LDG, Laboratório de Garagem, adquira alguns sensores da Sparkfum ou da Figaro , plote os pontos de calibração sobre a curva de resposta e os repasse aos participantes da rede social interessados em montar o Bafômetro Eletrônico, juntamente com a tabela de calibração que pode ser obtida com um simulador do tipo MARK IIA Alcohol Breath Simulator, que foi produzido pela Dräger:
ou similar
http://www.guthlabs.com/product.asp?item_id=182#specs
(Guth) , se o pessoal do LDG se interessar podemos discutir a forma de fazê-lo.
Abraços a todos,e se beber não dirija !
…
Adicionado por Joe Nova ao 16:41 em 5 fevereiro 2012