SergioBrito / NOVA

Criando e desenvolvendo coisas para aprendizado =))))))))))))
0 stars 0 forks source link

[Aprendizado] Projetos Finalizados #3

Open Marceloamds opened 9 years ago

Marceloamds commented 9 years ago

Galera, postem aqui os projetos que vocês já fizeram. Falem como vocês fizeram eles e se possível postem o código. A finalidade disso é pra ter uma boa documentação do que já fizemos e também para que pessoas novas possam aprender. Tente também não postar projetos que outros já tenham postado. Valeu!

Marceloamds commented 9 years ago

Esses foram os projetos com que comecei.

Como fazer: Coloque um LED na protoboard ligado ao Arduino, Você controla o delay de quando ele acende e apaga.

Link com Explicação Detalhada

Código: void setup() { pinMode(10,OUTPUT); } void loop() { digitalWrite(10,HIGH); delay(500); digitalWrite(10,LOW); delay(500); }

É a evolução do Pisca LED, você vai apagar e acender um LED sincronizando com os outros dois de modo que simule sinais de trânsito

Como fazer: coloque três LED's na protoboard ligado ao Arduino. Comece acendendo a verde. espere 4s (ou o tempo que você preferir) e desligue a verde ao mesmo tempo que você liga a amarela. Espere 1s. Desligue a amarela e acenda a vermelha. Espere 5s.

Link com Explicação Detalhada

Código: void setup() { pinMode(10,OUTPUT); pinMode(11,OUTPUT); pinMode(12,OUTPUT); } void loop() { digitalWrite(10,LOW); digitalWrite(12,HIGH); delay(4000); digitalWrite(12,LOW); digitalWrite(11,HIGH); delay(1000); digitalWrite(11,LOW); digitalWrite(10,HIGH); delay(5000); }

Esse é dahora, você vai poder interagir com seu arduino fora do PC !1!!1!1. Não tenho o código pra esse, mas é bom vocês fazerem. Link do botão loko

Isso eu fiz depois do sinal de transito, só pra ter uma ideia de que tipo de código é usado no buzzer.

Como fazer: Coloque um buzzer na protoboard ligado ao Arduino, copie a porra do código da internet e fique feliz ao ouvir a música do Super Mario

Link para copiar

Deem uma olhada nesse código, vejam como o buzzer manda sons e tentem reproduzir isso. Não deve ser difícil.

É isso aí galera! Agora vocês tem o mesmo conhecimento que eu tinha antes de ontem! Continuem comendo cus, amo vocês.

Marceloamds commented 9 years ago

Esse projeto é só pra você saber como a luz RGB funciona. Tem uma com o Sérgio e outra lá no laboratório da faculdade, não temos total acesso a elas e nem tenho o código que usei pra acende-la. Mas é uma luz dahora que dá pra vc mexer com altas putarias. Acho que vale a pena dar uma pesquisada e, se você tiver na companhia do Sérgio, ou você se encontrar no laboratório, liga essa porra aí:

Link da Luz Foda

Esse é legalzinho também. Não tenho código pra esse mas é dahora. Vocês vão ligar o potenciômetro na Protoboard, junto com o servo motor. Quando você gira o potenciômetro, você gira o servo motor.

Link da alegria

Esse é um projeto bem mais complicado que os outros, mas vocês tão prontos. É o mesmo projeto que o Sérgio fez pro trabalho de IEC e é massa pra quem quer sair dos LED's. Você vai precisar também baixar uma biblioteca nova, a do sensor ultrassônico: Baixe Aqui

Como Fazer:

Coloque o Sensor Ultrassônico na Protoboard, ligando o 5v do Arduíno no VCC. Ligue Trigger e Echo nas portas digitais e o GND no GND. Coloque também três led's e um buzzer.

Você vai programar as distâncias em que os leds acendem. Também vão programar com que frequência o buzzer apitará. No meu programa quando o LED verde está aceso, coloquei para o buzzzer não tocar, é irritante pra caralho.

Não dá pra explicar perfeitamente aqui. Esse link Explica muito melhor. Mas lá não tem buzzer.

Código:

include "Ultrasonic.h"

Ultrasonic ultrasonic(11,10); long microsec = 0; float distanciaCM = 0;

void setup() { pinMode(4,OUTPUT); pinMode(3,OUTPUT); pinMode(2,OUTPUT); pinMode(7,OUTPUT); }

void loop() {
microsec = ultrasonic.timing(); distanciaCM = ultrasonic.convert(microsec, Ultrasonic::CM);

digitalWrite(4,LOW);
digitalWrite(3,LOW); digitalWrite(2,LOW);

if (distanciaCM > 20) { digitalWrite(4,HIGH);
} if (distanciaCM <=20 and distanciaCM >= 10) { digitalWrite(3,HIGH); tone(7,500); delay(200); noTone(7) } if (distanciaCM < 10) { digitalWrite(2,HIGH); tone(7,500); delay(100); noTone(7) } }

De longe meu projeto preferido até agora. Vamos usar uma LCD pra mandar o Henrique tomar no cu e mostrar o amor que temos com ele <3. Vamos usar uma biblioteca nova, mas esse já vem incluído com a IDE do Arduíno.

Como Fazer:

Vamos usar só a LCD nesse projeto. Ligar uma LCD é chato pra caralho, precisamos de dois(sim, DOIS) potenciômetros e uma caralhada de jumper. Tem aqui um link explicando certinho como ligar, mas não copie aquele código, é bugado.

Link com explicação

Código:

include "LiquidCrystal.h" //Inclui a biblioteca do LCD

LiquidCrystal lcd(9, 8, 5, 4, 3, 2); //Configura os pinos do Arduino para se comunicar com o LCD void setup() { lcd.begin(16, 2); //Inicia o LCD com dimensões 16x2(Colunas x Linhas) } void loop() { lcd.setCursor(0, 0); //Posiciona o cursor na primeira coluna(0) e na primeira linha(0) do LCD lcd.print("Henrique"); delay(200); lcd.print("."); delay(200); lcd.print("."); delay(200); lcd.print("."); delay(1000); lcd.setCursor(0,1); lcd.print("Vai tomar no cu!"); delay(2000); lcd.clear(); lcd.print("By SeuNome"); lcd.setCursor(0,1); lcd.print(" e Marcelo <3"); delay(2000); lcd.clear(); }

Esse projeto é provavelmente o mais complicado dos básicos, vamos ligar o LCD junto com o Sensor ultrassônico e o LCD vai mostrar em centímetros, o quão longe o objeto está do sensor

Como Fazer:

Agora você provavelmente sabe ligar um LCD mas não decorou porra nenhuma, que nem eu. Volte a Este Link e veja novamente.A mesma coisa com o sensor ultrassonico. Volte a Este Link e Veja novamente. Você vai precisar guardar a distancia em centímetros numa variável e printar ela, seguido de " cm". A parte mais hard é montar a protoboard.

Código:

include "Ultrasonic.h"

include "LiquidCrystal.h" //Inclui a biblioteca do LCD

LiquidCrystal lcd(9, 8, 5, 4, 3, 2); //Configura os pinos do Arduino para se comunicar com o LCD

long microsec = 0; float distanciaCM = 0; Ultrasonic ultrasonic(50,51);

void setup() { lcd.begin(16, 2); //Inicia o LCD com dimensões 16x2(Colunas x Linhas) }

void loop() { lcd.setCursor(0,0); microsec = ultrasonic.timing(); //Convertendo a distância em CM distanciaCM = ultrasonic.convert(microsec, Ultrasonic::CM); lcd.print(distanciaCM); lcd.println(" cm"); delay(600); lcd.clear(); }

Caras, se vocês já fizeram todos esses projetos, vocês tem o mesmo conhecimento que eu enquanto escrevo isso. Ainda vamos brincar com o sensor de Temperatura/Umidade, assim como o Sensor de Luz. Depois disso já vai ter acabado a parte básica e vamos começar a aprender sobre motores para podermos montar o nosso fodendo carrinho. É isso aí. VAMO FACOM PORRA.

henriqjanuario commented 9 years ago

Como fazer:

Mesclamos uma serie de projetos já postados aqui, sem segredos. Só usamos alguns if's e else's que vocês já devem conhecer da linguagem C

Código:

include "Ultrasonic.h"

include "LiquidCrystal.h" //Inclui a biblioteca do LCD

LiquidCrystal lcd(9, 8, 5, 4, 3, 2); //Configura os pinos do Arduino para se comunicar com o LCD int buzzer=47; //Define o pino 47 como sendo buzzer long microsec = 0; float distanciaCM = 0; Ultrasonic ultrasonic(50,51);

void setup() { lcd.begin(16, 2); //Inicia o LCD com dimensões 16x2(Colunas x Linhas) }

void loop() { lcd.setCursor(0,0); microsec = ultrasonic.timing(); //Convertendo a distância em CM distanciaCM = ultrasonic.convert(microsec, Ultrasonic::CM); lcd.print(distanciaCM); lcd.println(" cm"); if(distanciaCM>14 &&distanciaCM<20)//define uma distancia para o print da mensagem { lcd.clear(); lcd.setCursor(0,0); lcd.print("Um penis"); if(distanciaCM>=14 &&distanciaCM<=16)//este if, assim como os proximos, defines a mensagem a ser printada conforme a distancia captada { lcd.setCursor(0,1); lcd.print("8===D"); tone(buzzer,600); delay(150); noTone(buzzer); } else if(distanciaCM>16 &&distanciaCM<=18) { lcd.setCursor(0,1); lcd.print("8=====D");tone(buzzer,600); delay(100); noTone(buzzer); } else if(distanciaCM>18 &&distanciaCM<=20) { lcd.setCursor(0,1); lcd.print("8=======D"); tone(buzzer,600); delay(50); noTone(buzzer); } } delay(200); lcd.clear(); }

Nesse projeto usamos um sensor de luz LDR, é uma peça nova que mede a luz. Também usamos um LCD para printar o quanto de luz tem. não tem muito segredo, é uma peça fácil de usar. O único problema é que precisamos de um Resistor de 10K FUCKING OHMS, não achamos isso fácilmente, então usamos um potenciômetro pra isso.

Código:

include "LiquidCrystal.h"

LiquidCrystal lcd(9,8,5,4,3,2); int sensor = 0;
int valorSensor = 0; void setup(){ lcd.begin(16,2); } void loop(){

int valorSensor = analogRead(sensor); lcd.setCursor(0,0); lcd.print("Luz: "); lcd.print(valorSensor); delay(200); lcd.clear(); }

Esse Projeto é bem parecido com o de Sensor de Luz LDR, você conecta o Sensor na porta analógica e printa a Umidade e Temperatura no LCD. Quando você assopra nele ele aumenta a umidade. É bem cool.

Código:

include "LiquidCrystal.h"

include "dht.h"

define dht_dpin A1 //Pino DATA do Sensor ligado na porta Analogica A1

LiquidCrystal lcd(9,8,5,4,3,2); dht DHT; //Inicializa o sensor void setup() { lcd.begin(16,2); delay(1000); }

void loop() { DHT.read11(dht_dpin); //Lê as informações do sensor lcd.setCursor(0,0); lcd.print("Umd: "); lcd.print(DHT.humidity); lcd.print("%"); lcd.setCursor(0,1); lcd.print("Tmp: "); lcd.print(DHT.temperature); lcd.print(" C"); delay(2000);
lcd.clear(); }

Neste projeto eu basicamente coloquei os sensores de luz e tem/umd no arduino e adicionei um push button pra cada função.

Como fazer

Vamos precisar de um sensor LDR, um sensor DHT11, 3 potenciometros, um LCD, 2 push buttons, 2 resistores, uma protofucking board BOA(pq ficou lotado aqui) e 29/30 fucking jumpers.

O segredo desde projeto está na organização, sao muitos jumpers e aparelhos para uma protoboard.

obs: atenção na hora de por os jumpers para nao por na linha horizontal da protoboard onde ja se encontra uma ligaçao com algum objeto, caso você faça isso, o arduino vai desligar e você entrará em desespero achando que o bagulho queimou(como eu).

Código O código é uma junção dos dois projetos anteriores com o projeto do push button, basicamente copiei e colei dois projetos e os separei por um if. Atualizei o código para que as funções rodem mais bonitamente. O que eu fiz? adicionei alguns whiles em vez de ifs para que o lcd nao fique piscando, principalmente na tela de inicio onde selecionamos o botao, agora ela nao pisca e as informaçoes só aparecem enquanto algum dos botões está pressionado, ao soltarmos algum deles o lcd mostra a tela de inicio de novo.

include "dht.h"

include "LiquidCrystal.h"

define tempum A1

LiquidCrystal lcd(9,8,5,4,3,2); dht DHT; int sensor =0; int valorsensor =0; int botaoe=22; int botaod=23; int estadobotaoe=0; int estadobotaod=0; void setup() { lcd.begin(16,2); pinMode(botaoe,INPUT); pinMode(botaod,INPUT); }

void loop() { while(estadobotaoe==LOW &&estadobotaod==LOW){ lcd.setCursor(0,0); lcd.print("right: "); lcd.print("luz"); lcd.setCursor(0,1); lcd.print("left: "); lcd.print("temp/umd"); delay(10); estadobotaoe=digitalRead(botaoe); estadobotaod=digitalRead(botaod); if(estadobotaoe==HIGH||estadobotaod==HIGH) lcd.clear(); } while(estadobotaoe==HIGH){ DHT.read11(tempum); estadobotaoe=digitalRead(botaoe); lcd.setCursor(0,0); lcd.print("Umd: "); lcd.print(DHT.humidity); lcd.print("%"); lcd.setCursor(0,1); lcd.print("Tmp: "); lcd.print(DHT.temperature); lcd.write(B11011111); lcd.print("C"); delay(150); if(estadobotaoe==LOW) lcd.clear(); } while(estadobotaod==HIGH){ estadobotaod=digitalRead(botaod); int valorsensor=analogRead(sensor); lcd.setCursor(0,0); lcd.print("Luz: "); lcd.print(valorsensor); delay(150); if(estadobotaod==LOW) lcd.clear(); } }

Marceloamds commented 9 years ago

Nesse projeto nós usamos um fucking sensor infra-vermelho. Ele mede a distância, igual o ultrassônico, mas é mais simples de usar e é bem cool. O sensor Infra-Vermelho não tem pinos bonitinhos igual o Ultrassônico VOCÊ TEM QUE ENROLAR O COBRE DOS FIOS DO INFRA-VERMELHO NOS JUMPERS. O sensor dá a distância de um jeito diferente que o ultrassônico. Quanto menor a distância, maior o número que ele devolve. Por isso coloquei uma relação inversa na hora de calcular o delay do buzzer e do led para que ele seja menor, quando menor a distância, em vez de ao contrário, Entenderam?. Pesquisem na internet como liga um sensor Infra-Vermelho no arduíno. Um fio é do ground, outro do 5V e outro do Analógico.

Código: void setup() { pinMode(0,INPUT); pinMode(13,OUTPUT); pinMode(7,OUTPUT); }

void loop() { int ir = analogRead(0); ir= 20000/ir; if(ir > 1000) ir = 1000; digitalWrite(13,HIGH); tone(7,500); delay(ir); digitalWrite(13,LOW); noTone(7); delay(ir); }

Então, caras. Esse projeto foi a ideia do Sérgio. Dá pra fazer com o ultrassônico também, só mudar o código. Vamos colocar um buzzer e um sensor infra-vermelho ligados ao arduíno. O buzzer deve tocar um som da escala pentatônica de Sol de acordo com a distância do Sensor. Sim, vamos precisar saber a frequência de cada nota, mas o pai já fez isso por vocês. Não é nada difícil. É de boa.

Código:

define G 98

define As 116

define C 130

define D 147

define E 165

define Fs 185

define B 246

define Cs 277

define D1 294

define Fa 349

define G1 392

define As1 466

define x 300

int s = 0; int c = 0;

void setup() { pinMode(7, OUTPUT); Serial.begin(9600); pinMode(A0, INPUT); }

void loop() { s = analogRead(0); Serial.println(s); if (s <= 650 && s >= 10) { c = map(s, 650, 10, 1, 12); switch (c) { case 1: tone(7, G); delay(x); break; case 2: tone(7, As); delay(x); break; case 3: tone(7, C); delay(x); break; case 4: tone(7, D); delay(x); break; case 5: tone(7, E); delay(x); break; case 6: tone(7, Fs); delay(x); break; case 7: tone(7, B); delay(x); break; case 8: tone(7, Cs); delay(x); break; case 9: tone(7, D1); delay(x); break; case 10: tone(7, Fa); delay(x); break; case 11: tone(7, G1); delay(x); break; case 12: tone(7, As1); delay(x); break; } } else { noTone(7); delay(200); } }

Galera, este projeto marca a nossa ida do básico básico para o básico médio do Arduíno. VAMOS LIGAR UM FUCKING MOTOR! e controlar a velocidade dele com um potenciômentro. Montar a protoboard é bem difícil e confuso. Vou incluir aqui fotos do livro para ajuda-los.

Algo muito importante para se ver é se o diodo está com a faixa voltada para o mesmo lado que o da foto, se não estiver, você vai queimar o Arduíno.

Componente Necessários 1 Componentes Necessários 2 Conectando os Componentes 1 Conectando os Componentes 2

Código: int potPin = 0; int transistorPin = 9; int potValue = 0;

void setup(){ pinMode(transistorPin,OUTPUT); }

void loop(){ potValue = analogRead(potPin) / 4; analogWrite(transistorPin,potValue); }

Usamos um sensor Infravermelho para controlar as notas da escala pentatônica e usamos um potenciômetro para controlar a velocidade das notas.

Código

define G 98

define As 116

define C 130

define D 147

define E 165

define Fs 185

define B 246

define Cs 277

define D1 294

define Fa 349

define G1 392

define As1 466

int s = 0; int c = 0; int p = 0; int x = 0; void setup() { pinMode(7, OUTPUT); Serial.begin(9600); pinMode(A0, INPUT); pinMode(A1, INPUT); } void loop() { p = analogRead(1); p = map(p,0,1023,1,8); switch(p){ case 1: x = 150; break; case 2: x = 300; break;

case 3: x = 450; break; case 4: x = 600; break; case 5: x = 750; break; case 6: x = 900; break; case 7: x = 1050; break; case 8: x = 1200; break; }

s = analogRead(0); Serial.println(s); if (s <= 650 && s >= 10) { c = map(s, 10, 650, 1, 12); switch (c) { case 1: tone(7, G); delay(x); break; case 2: tone(7, As); delay(x); break; case 3: tone(7, C); delay(x); break; case 4: tone(7, D); delay(x); break; case 5: tone(7, E); delay(x); break; case 6: tone(7, Fs); delay(x); break; case 7: tone(7, B); delay(x); break; case 8: tone(7, Cs); delay(x); break; case 9: tone(7, D1); delay(x); break; case 10: tone(7, Fa); delay(x); break; case 11: tone(7, G1); delay(x); break; case 12: tone(7, As1); delay(x); break; } } else { noTone(7); delay(200); } }

Agora nós vamos estar voltados para o desenvolvimento do carrinho, que é nosso objetivo final para todo esse aprendizado. É isso aí galera!!!!!