Search the Community
Showing results for tags 'arduino'.
-
Olá, boas. Estava a tentar realizar um projeto em C# sobre um sistema de entradas/saídas do trabalho, ou seja um sistema que anotava a hora de entrada da pessoa e a hora de saída da mesma e que guardasse numa BD as infos para as ver na dashboard. Mas o problema não está ai pois um sistema desses é relativamente simples, o problema está em eu querer ir um pouco mais longe e querer adicionar biometria... Estive a fazer uma pesquisa e vi que consigo atingir isso ao usar Arduíno pois o mesmo tem um tal de Fingerprint Sensor que é fácil de usar/montar. Só que estou sem saber como juntar a aplicação C# com Arduíno. Para ser mais claro, eu tenho a aplicação em C# que é mais uma espécie de dashboard que só estaria disponível para mim, para eu verificar as entradas/saídas da malta, e teria o Arduíno com o Fingerprint Sensor que estaria disponível para toda a gente e que serve para guardar esses dados e passar os mesmo para a dashboard e respetiva pessoa. Resumindo, o problema que tenho está na parte de passar os dados do Arduíno para a dashboard pois não estou a ver como é que ao a pessoa por o dedo e aquilo marcar a hora de entrada/saída conseguir passar ao mesmo tempo para a dashboard... Exemplo: O X chegou às 8h ao trabalho, pós o dedo no sensor para marcar a hora de entrada e foi trabalhar, às 16h o X saiu do trabalho e voltou a por o dedo no sensor para agora marcar a hora de saída. No fim do dia eu fui verificar a que horas a malta entrou e saiu do trabalho então fui ao meu PC e abri a aplicação em C# (dashboard) onde consegui verificar o nome da pessoa e a respetiva hora de entrada/saída: Data: 6/11/2022 Pedro -> Entrada: 8h | Saída: 16h Miguel -> Entrada: 10h | Saída: Sem registro de saída Data: 7/11/2022 Mariana -> Sem registro Joana -> Entrada: 9h | Saída: 17h ... Obrigado e cumprimentos 😉
-
Boa tarde, eu estou a realizar um projeto da escola, onde tenho que usar um Arduíno como controlador... A minha ideia de projeto era criar um elevador, com 3 andares, onde consoante a seleção do andar ele subia ou descia, usando um motor step, push button, e reed switchs... Eu já comecei a fazer o código da leitura dos valores do sensor, para assim determinar se desce ou sobe, mas por alguma razão está constantemente a dar erro. Código: // Projeto 5 - <span style="font-weight: 400">Interruptor de luz</span> #include <Stepper.h> int botao1 = 1; int botao2 = 2; int botao3 = 3; int sensor1 = 4; int sensor2 = 5; int sensor3 = 6; const int stepsPerRevolution = 500; Stepper myStepper(stepsPerRevolution, 8,10,9,11); void setup() { pinMode(botao1, INPUT);// define o pino do botao como entrada "INPUT" pinMode(botao2, INPUT);// define o pino do botao como entrada "INPUT" pinMode(botao3, INPUT);// define o pino do botao como entrada "INPUT" myStepper.setSpeed(60); //velocidade do motor botao1 == LOW; //colocar os botoes a zero no inicio botao2 == LOW; //colocar os botoes a zero no inicio botao3 == LOW; //colocar os botoes a zero no inicio } void loop() { //Colocar o Elevador no Primeiro Piso sempre que iniciado if(digitalRead(sensor1) == LOW) && (digitalRead(sensor2) == HIGH || digitalRead(sensor3) == HIGH) { do{ myStepper.step(-10); //sobe ou desce o motor, neste caso, como é negativo desce } while (sensor1 == LOW); } //Esperar as instruções do utilizador if(digitalRead(botao1) == HIGH) // Se o botão for pressionado { if(digitalRead(sensor1) == LOW) && (digitalRead(sensor2) == HIGH || digitalRead(sensor3) == HIGH) //Se o sensor não estiver ativo { do{ myStepper.step(-10); //sobe ou desce o motor, neste caso, como é negativo desce } while (sensor1 == LOW); } else { } if(digitalRead(botao2) == HIGH) // Se o botão for pressionado { if(digitalRead(sensor2) == LOW) && (digitalRead(sensor1) == HIGH) //Se o sensor não estiver ativo { do{ myStepper.step(10); //sobe ou desce o motor, neste caso, como é positivo sobe } while (sensor2 == LOW); } if(digitalRead(sensor2) == LOW) && (digitalRead(sensor3) == HIGH) //Se o sensor não estiver ativo { do{ myStepper.step(-10); //sobe ou desce o motor, neste caso, como é negativo desce } while (sensor3 == LOW); } } else { } if(digitalRead(botao3) == HIGH) // Se o botão for pressionado { if(digitalRead(sensor3) == LOW) && (digitalRead(sensor2) == HIGH || digitalRead(sensor1) == HIGH) { do{ myStepper.step(10); //sobe ou desce o motor, neste caso, como é positivo sobe } while (sensor3 == LOW); } } else { } } Alguém sabe o porque, e como resolver isto? é que o erro é apenas nos "ifs" que tem de analisar os 3 sensores. Desde já obrigado pela ajuda.👍
-
Boas pessoal. Há por ai malta a bater código para os ESP3266 ? Eu tenho andado a "brincar" com isso ultimamente e ando a ver se encontro pessoal para trocar ideias de vez em quando, era para saber se este publico anda por aqui!
-
Olá, neste momento tenho dificuldade em começar um projeto que consiste em: Simular um portão usando protocolo I2C (Arduíno Master e Arduíno Slave), motor DC e 2 botões (um para abrir e outro para fechar). A realidade é que não me dou lá muito bem com eletrônica mas queria apenas que me ajudassem a começar e a entender o que tenho que fazer.
-
Boa tarde pessoal, Estou a tentar programar um módulo SIM800L para envio de mensagens e isto já me está a tirar do sério. Tenho ligados 5V 2mA diretamente à placa através de um carregador de telemóvel. Já experimentei muitas outras formas, mas esta foi a única com a qual consigo que o módulo apanhe rede e fique a piscar apenas de 3s em 3s. O que me está a acontecer é que às vezes através do código ele envia mensagens e outras vezes não. Já o consegui meter a funcionar, desliguei e no dia seguinte com o mesmo código já não funciona. Perdi várias horas depois a tentar mais coisas e de um momento para o outro volta a mandar. Desligo e passado um pouco volto a ligar e já não manda novamente. Alguém me consegue dar uma ajuda com isto? Já testei imensos códigos e nada. A maior parte das vezes no serial port apenas me aparece o ponto de interrogação invertido. Obrigado.
-
Boa noite Estou a desenvolver um projeto onde necessito de um programador com experiencia, para me ajudar a elaborar o schematic e na interpretação do código. Irei utilizar arduino mega com os seguintes sensores : SIM800L, BMP280,GY-521 e LoRa WiFi Alguém interessado ? Zona de Lisboa
-
Estou a realizar um projeto, mas como só sei fazer alguma coisa de programação em assembly, venho pedir ajuda. Preciso de um arduino uno a ligado por usb a um pc a funcionar como se fosse um teclado da seguinte maneira: O arduino vai ter 5 switchs (numa primeira fase) e iremos dar nome a estes switchs 1- subir 2- descer 3- esquerda 4- direita 5- enter Q switch 1, subir, vai fazer com que o arduino envie para o pc o correspondente em ASCII das letras, A,B,C,D, …X,Y,Z,a,b,c,…0,1,2,3,4,5,6,7,8,9,“ponto”, “espaço”. isto é maisculas, minusculas, algarismos, ponto e espaço. O switch 2, descer, faz o mesmo mas de forma inversa, isto é começa em “espaço”, “ponto” 9,8,7, etc O switch 3, vai fazer com que salte para a linha seguinte O switch 4 , esquerda, vai fazer com que a linha pule para a esquerda O switch 5, envia o caráter " enter" para o pc - Se se manter por mais de 1 ou 2 segundos os switches subir ou descer o arduino tem que enviar sequencialmente os caracteres Ao pressionar simultaneamente 2 ou mais chaves o arduino não deve enviar nada. Alguém me pode realizar este codigo por favor Obrigado
-
Bom dia, Gostaria de fazer um projeto (caseiro) em que um arduino (penso que seja a melhor solução) controlasse fitas de led e com isso conseguisse fazer uma animação do género do video que segue a baixo (com menor escala claramente) https://www.youtube.com/watch?v=mZG7IKelg-I O meu conhecimento é quase nulo mas tenho interesse na área. Por onde devo começar? E o que devo adquirir? Cumprimentos
-
Boa noite, Sou iniciante em arduino e estou a fazer um projeto para a faculdade, no entanto tenho um pequeno problema e preciso de ajuda. Pelo que eu percebi, o sensor de watchdog por predefinição vem alocado às entradas A4 e A5 do Arduino Uno devido ao DS1307_ADDRESS que vem predefinido com essas entradas, no entanto os meus Arduinos já tem essas entradas ocupadas, (por causa da escravatizaçao). Alguém me sabe dizer como faço para mudar a directoria das entradas, por favor? Ou então como faço para o arduino ler a data e hora do pc e não precisar do watchdog. Desde já agradeço 🙂
-
Como é que ligo 2 motores ao arduino UNO?
-
Boa tarde amigos Estou a fazer um projecto onde tenho com o arduino saber a voltagem de uma bateria de 12 v Como fasso para saber a voltagem que a bateria tem com o arduino ? Obrigado
-
Boas. Gostaria de pedir ajuda para conseguir configurar 2 arduinos equipados com shields ethernet de forma a comunicarem um com o outro. No fundo preciso que um dos arduinos leia valores analógicos e digitais provenientes de potenciometros e interruptores, converte-los em valores e envia-los por LAN, calculo que por via de pacotes UDP para o segundo arduino. A minha duvida reside apenas no lado da comunicação LAN entre arduinos. Ja tentei os vários exemplos de comunicação UDP que encontramos no IDE mas não estou a conseguir o que pretendo. Nao faço ideia como "empacotar" os valores, como envia-los via UDP, nem como recebe-los e muito menos de como os "desempacotar" Alguém me pode ajudar com este problema? Se nao for pedir muito, agradecia um exemplo pratico e forma de dois códigos funcionais que eu possa adaptar às minhas necessidades, um send e um receive. Obrigado
-
Bom dia! Há algum tempo que não vinha aqui chatear! Bom, cá vai! Tenho uma matriz bi-dimensional quem tem um mapa com custom chars que vai servir para criar uma letra grande num LCD Esta letra grande vai ocupar 5 colunas e 4 linhas, tipo quando juntamos várias televisões para obter uma imagem grande a partir de partes dessa imagem grande em cada televisão. A matriz está declarada da seguinte maneira: static const PROGMEM unsigned char customCharMap[20][8]{ {......}, {......}, . . . {......} } Ou seja, esta variável contém 20 caracteres especiais, cada um constituído por 8 bytes Depois tenho uma função para guardar esta variável numa área especial de memória do LCD, denominada CGRAM. O problema é que esta memória só tem espaço para 64 bytes! Ou seja, só posso gravar 8 custom chars de cada vez, dos 20 que constituem a letra grade final, usá-los e depois gravar outros 8 e assim sucessivamente até completar a letra final. Para simplificar, e como a letra final tem 5 colunas e 4 linhas, vou gravar apenas 5 custom chars de cada vez na tal CGRAM do LCD e depois imprimi-los nos LCD. Depois gravo os seguintes 5 custom chars na CGRAM e volto a imprimi-los no LCD na linha seguinte e assim sucessivamente até ter a letra final completa! Algo como isto: 1º - Gravar 5 custom chars na CGRAM 2º - Imprimi-los na linha 0 do LCD 3º - Gravar os 5 custom chars seguintes na CGRAM em cima dos anteriores 4º - Imprimi-los na linha 1 do LCD 5º - Gravar os 5 custom chars seguintes na CGRAM em cima dos anteriores 6º - Imprimi-los na linha 2 do LCD 7º - Gravar os últimos 5 custom chars na CGRAM em cima dos anteriores 8º - Imprimi-los na linha 3 do LCD Agora o código. Tenho uma função para gravar um custom char na CGRAM que é a seguinte void writeCustomChar(static const PROGMEM unsigned char *customChar, uint8_t customCharOffset){ lcd_command(_BV(LCD_CGRAM)); /* set CG RAM start address 0*/ for (uint8_t i = customCharOffset; i < customCharOffset + 5; i++){ for(uint8_t j = 0; j < 8; j++) lcd_data(pgm_read_byte_near(&customChar[i][j])); } } As minhas dúvidas estão apenas relacionadas com os tipos de dados da matriz bi-dimensional e os tipos de dados enviados para esta função. Por outras palavras, ponteiros! Ou seja, não sei se a passagem de parâmetros por referência está correcta.
-
Boas, gostaria de saber se ha laguem por aqui que saiba programar em arduino para comunicação CanOpen que é uma derivação de CanBus. O objectivo é ter um arduino a controlar dois controladores de motor da marca roboteq usando este protocolo. obrigado
-
A minha PAP é a seguinte: c/ arduinos Wifi's connectar um relógio (feito por mim) a um contador de tempo bilhar, e deste modo através do relógio conseguir visualizar o tempo decorrido e o preço a pagar. Estou c dificuldades, por exempli nao estou a consgeuir conectar os dois arduinos Wifi shield (o código em C que arranjei não funciona).
-
Boa tarde pessoal Sou novo aqui no forum e muito fresquinho no que toca a programaçao e procuro ajuda num projecto que pretendo realizar com um arduino uno e um servo motor, portanto passo a explicar o que pretendo e deixo um video a exemplificar. Pretendo programar um arduino uno para manter o servo sempre numa posiçao, vamos chamar "fechado", em que para o servo passar a posiçao "aberto" seja com um segundo sinal de corrente, ou seja, o arduino apenas vai fazer o servo trabalhar ate um X de abertura quando recebe o segundo sinal de corrente e para, ao desligar esse segundo sinal de corrente o servo volta a posiçao inicial que é "fechado". Preciso de ajuda no que toca a programar e no material que necessito, ja tenho o arduino, servo, fios com encaixes proprios para o arduino/servo, nao sei se para isto devo utilisar algum tipo de relé ou algo mais, ja pesquisei uns valentes dias e ainda nao encontrei nada do que pretendo nem quem me ajude, se houver alguem que me possa dar umas dicas fico agradecido. Entretanto ja fui lendo algumas coisas sobre arduino para iniciantes e ja consegui fazer algumas coisitas basicas com o servo mas ainda estou muito longe de me safar em algo mais complicado. Fica entao um video do que pretendo no final, neste caso o segundo sinal de corrente sera o de marcha atras engatada, claro que terei de usar um redutor de 12v para 5v que tambem ja tenho. https://www.youtube.com/embed/1eeIuuES1t4?feature=oembed
-
Bom dia, Tenho um projeto para preparar com alguma urgência de um carro com um motor passo a passo (step motor) em cada roda (tem 2 rodas e um apoio). Em termos de algoritmo e raciocinio tenho tudo pronto, mas passar daí para um código AVR C que funcione é outra história. Estou bastante verde no que toca a programar no arduino e para o prazo curto que tenho duvido que consiga chegar lá sozinho pelo que venho aqui pedir uma mãozinha. O algoritmo/raciocinio: 1) Detetar com uma interrupção um flanco na entrada que seria o START bit a indicar uma introdução de uma cadeia de bits correspondentes a uma tecla; 2) Esperar 3.58ms 3) Ter várias interrupções de 901us e detetar se nesse ponto tenho entrada a 1 ou a 0, se estiver a um, colocar num vetor[13] o valor 1 na posição da variável BIT que será incrementada +1 a cada interrupção 4) reiniciar a variável BIT 5) comparar o vetor[13] que será a chave de um botão pressionado com as chaves de todos os botões que temos no comando 6) de acordo com o resultado da comparação, mover o stepper +1, -1 ou 0 (parado) 1 passo. Com isto, se mantiver o botão premido o programa funciona em ciclo e estará sempre a mandar o stepper rodar (tenho uma libraria que o faz rodar 90º para a frente ou para trás independentemente da posição atual). Agradecia alguma ajuda no código visto que nem tenho uma ideia bem definida de como começar ou por onde começar.
-
Boas. Ando a ver se consigo arranjar maneira de criar movimento num LCD de forma suave sem ser simplesmente saltar de uma posição para outra. Vou tentar explicar com alguns "desenhos". O LCD é composto por linhas e colunas, sendo que no meu caso, tenho um LCD de 20 colunas * 4 linhas O mais comum é fazer saltar um caractére de uma coluna para a coluna seguinte mas isto cria um movimento pouco suave e parece que estamos a jogar um jogo a 3 fps ou menos. Agora a parte mais técnica é a seguinte: cada posição do LCD é constituída por uma matriz de 5 colunas e por 8 linhas de pixeis e cada '__' é constituído por: Isto permite-nos criar caractéres personalizados colocando cada pixel a 0 ou a 1. Exemplo: Ou seja, a ideia é criar uma matriz: int matrix [8] = { 0b00011000, 0b00100100, 0b01000010, 0b10000001, 0b01000010, 0b00100100, 0b00011000, 0b11111111 } E para criar movimento suave, tentar usar as operações de bitshift para ir avançando ou atrasando os 1's daquela posição para os ir colocando na posição seguinte: Ou seja, os 1's vão acançando bit a bit para a direita, e vão abandonando a posição actual para irem aparecendo também bit a bit na posição seguinte. Algo como isto: depois passa a isto pronto e depois o losango vai passando para a posição seguinte, bit a bit... Já não me apetece desenhar mais!!! Fonix! PS: Eu disse que cada caractére é composto por 5 colunas e 8 linhas mas desenhei como se fosse 8 * 8. Não vou emendar porque o que importa é perceber como funciona e perceber o que pretendo fazer!
-
Gostava de saber se dá para copiar um programa da placa de Arduino, para o PC, ou seja para o software de programação Arduino. É que fiz o upload tudo corretamente para a placa do Arduino, mas depois apaguei o programa do pc e não sei como o vou buscar é que não está em lado nenhum... Preciso disto URGENTE!!!! Obrigado pelo tempo.
-
Boas... Escrevi um pequeno código para recriar um movimento tipo radial para usar nos conhecidos sistemas pan/tilt, que usam dois servo-motores, um para o eixo dos xx e outro para o eixo dos yy. #include <Servo.h> #define VSPEED 8 #define HSPEED 10 #define UP 1 #define DOWN 0 Servo horservo; // create servo object to control a servo Servo verservo; // a maximum of eight servo objects can be created int verpos = 0; // variable to store the vertical servo position int horpos = 0; // variable to store the horizontal servo position void setup(){ horservo.attach(9); // attaches the horizontal servo on pin 9 to the servo object verservo.attach(8); // attaches the vertical servo on pin 9 to the servo object horservo.write(90); verservo.write(0); Serial.begin(9600); } void Print_Data(){ Serial.print("Vert Pos: "); Serial.print(verpos); Serial.print(","); Serial.print("Hor Pos "); Serial.print(horpos); Serial.print('\n'); } void motion_1(){ for(; horpos < 180; horpos += 2){ horservo.write(horpos); if(verpos < 90){ verservo.write(++verpos); delay(VSPEED); } else if (verpos > 0){ verservo.write(--verpos); delay(VSPEED); } delay(HSPEED); Print_Data(); } for(; horpos > 0; horpos -= 2){ horservo.write(horpos); if(verpos < 90){ verservo.write(--verpos); delay(VSPEED); } else if (verpos > 0){ verservo.write(--verpos); delay(VSPEED); } delay(HSPEED); Print_Data(); } } void motion_2(){ for(pos = start_pos; pos != end_pos; ) } void loop(){ motion_1(); } O código está a funcionar, não sei se está perfeito ou não, mas para já serve! No entanto, alguém com que eu estava a conversar, disse-me que o meu código podia ser simplificado e deu-me algumas pistas: Estas foram as pistas! Será que me conseguem ajudar???
-
Boas pessoal, Bem estou com severas duvidas em relação a um sistema de Arduino para estores. É o seguinte, neste momento tenho motores nos estores das minhas janelas que são controlados por interruptores dos normais, daqueles que se encontram a venda em qualquer superfície comercial da marca EFAPEL. https://img.olx.pt/images_olxpt/870096861_1_261x203_interruptor-estore-novo-efapel-beige-com-espelho-portes-includos-porto.jpg Portanto gostaria de saber se seria possível em cada motor de estore colocar uma placa de Arduino que funciona se num sistema independente. Ou seja este interruptor continuaria a funcionar e caso quisesse subir e descer o estore pela internet também seria possível. E uma ultima questão, esta placa teria de ter WiFi, embora haja a possibilidade de passar cabos rj45 preferia utilizar o WiFi para não enxer as caixas dos estores de cabos, sendo que os cabos do alarme que tenho em casa já estarem dentro de uma das caixas. Portanto não queria colocar mais fios para alem da corrente eléctrica para o Arduino. Obrigado pessoal
-
Boas, Tenho um Arduino Mega 2560, que estou a começar a aprender a programar usando o atmel studio 7.0. Criei a "External Tool" para fazer a compilação e o upload do programa para o arduino. Para começar, fiz um funcionamento simples, que consiste em três switchs de pressão e um display de 7 segmentos, em que pressionando cada switch é apresentado no display o seu respectivo numero (1,2 ou 3) durante 1 segundo. aqui está o codigo: #define F_CPU 16000000L #include <avr/io.h #include <util/delay.h> volatile unsigned char digito; const unsigned char tabela[]={0xc0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90, 0xFF, 0x86}; void inicio (void) { DDRB=0b00000000; PORTB=0b00000000; DDRA=0xFF; PORTA=0xFF; } void display(void) { PORTA=tabela[digito]; _delay_ms(1000); PORTA=0xFF; } int main(void) { inicio(); while (1) { if(PINB & (1 << PINB0)==1) //If switch 1 is pressed { digito=1; // 1 Display display(); } if(PINB & (1 << PINB1)==1) //If switch 2 is pressed { digito=2; // 2 Display display(); } if(PINB & (1 << PINB2)==1) //If switch 3 is pressed { digito=3; // 3 Display display(); } } } Acontece que quando pressiono o switch 2 e 3 não acontece nada, apenas funciona com o switch 1. Já tentei alterar para outro PORT, mas em todos apenas está a ler o PIN0 de cada PORT. Alguém me pode ajudar a resolver isto?
-
Boa noite, sou estudante na FEUP e este ano aprendi os básicos da programação em C de baixo nível com o Arduino (PWM, Timers, etc.) e surgiu a oportunidade de programar um raspberry pi 2 e gostava de saber se alguém tem algum tutorial de programação deste micro em C de baixo nível, uma vez que todos os tutoriais que encontro na net são em python e não é a linguagem em que pretendo programar. No Arduino eu "mexia" nos registos com código da seguinte forma: DDRC = DDRC | 0x01; Gostava de algum tutorial em que programasse de forma semelhante à do Arduino, se alguém tiver... Cumprimentos
-
Boa noite a toda a comunidade P@P. Encontro-me no último ano da minha Licenciatura em Engenharia Electrónica e Informática e, como é habitual no último ano os alunos têm de realizar um projecto, que tenha a ver com a área da electrónica/programação como é óbvio, se puder conjugar ambas as vertentes, melhor. O meu ensino secundário foi efectuado com sucesso num curso profissional, onde nos deram as bases na programação e, electrónica; agora na faculdade fui aperfeiçoando alguns conhecimentos; no que diz respeito à programação, em Basic, C#, Java, HTML CSS SQL, C/C++ (Arduínos). As minhas barreiras estão no que fazer para projecto final de curso (tendo em conta que faço qestão de o realizar com um amigo de confiança da minha turma; penso que será vantajoso na possibilidade de poder conciliar melhor os programas de trabalho no projecto com as aulas), estes obstáculos surgem uma vez que nos encontrámos com um mercado sobrelotado com ideias, com tecnologia, com projectos, de modo que encontrar algo novo e inovador se torna um pouco complicado, de modo a agradar ao público/jurados. Gostava que nos pudessem ajudar de alguma forma com a vossa maior experiência, das vossas vivências do dia-à-dia, que não seja mais para partilhar as vossas aventuras em projectos. 😄 Obrigado pela vossa atenção e, continuação de bom trabalho a todos.