ay(1000); SelecionaDataeHora(); inicio_ok =1; Serial.begin (9600); if (!SD.begin(4)) { Serial.println("Erro ao iniciar o cartao SD !"); inicio_ok =0; return; } Serial.println ("Iniciacao Ok!"); } void loop () { int leituraSensor = analogRead (0); arquivo = SD.open ("teste2.txt", FILE_WRITE); if (arquivo) { Mostrarelogio(); delay(1000); arquivo. println (leituraSensor); arquivo.close(); } } void SelecionaDataeHora() //Seta a data e a hora do DS1307 { byte segundos = 40; //Valores de 0 a 59 byte minutos = 59; //Valores de 0 a 59 byte horas = 23; //Valores de 0 a 23 byte diadasemana = 1; //Valores de 0 a 6 - 0=Domgino, 1 = Segunda, etc. byte dia = 17; //Valores de 1 a 31 byte mes = 4; //Valores de 1 a 12 byte ano = 13; //Valores de 0 a 99 Wire.beginTransmission(DS1307_ADDRESS); Wire.write(zero); //Stop no CI para que o mesmo possa receber os dados //As linhas abaixo escrevem no CI os valores de data e hora que foram colocados nas variaveis acima Wire.write(ConverteParaBCD(segundos)); Wire.write(ConverteParaBCD(minutos)); Wire.write(ConverteParaBCD(horas)); Wire.write(ConverteParaBCD(diadasemana)); Wire.write(ConverteParaBCD(dia)); Wire.write(ConverteParaBCD(mes)); Wire.write(ConverteParaBCD(ano)); Wire.write(zero); //Start no CI Wire.endTransmission(); } byte ConverteParaBCD(byte val){ //Converte o número de decimal para BCD return ( (val/10*16) + (val%10) ); } byte ConverteparaDecimal(byte val) { //Converte de BCD para decimal return ( (val/16*10) + (val%16) ); } void Mostrarelogio(){ Wire.beginTransmission(DS1307_ADDRESS); Wire.write(zero); Wire.endTransmission(); Wire.requestFrom(DS1307_ADDRESS, 7); int segundos = ConverteparaDecimal(Wire.read()); int minutos = ConverteparaDecimal(Wire.read()); int horas = ConverteparaDecimal(Wire.read() & 0b111111); int diadasemana = ConverteparaDecimal(Wire.read()); int dia = ConverteparaDecimal(Wire.read()); int mes = ConverteparaDecimal(Wire.read()); int ano = ConverteparaDecimal(Wire.read()); //Mostra a data no Serial Monitor Serial.print("Data: "); Serial.print(dia); Serial.print("/"); Serial.print(mes); Serial.print("/"); Serial.print(ano); Serial.print(" "); Serial.print("Hora : "); Serial.print(horas); Serial.print(":"); Serial.print(minutos); Serial.print(":"); Serial.print(segundos); switch(diadasemana) { case 0:Serial.println(", Domingo"); break; case 1:Serial.println(", Segunda"); break; case 2:Serial.println(", Terca"); break; case 3:Serial.println(", Quarta"); break; case 4:Serial.println(", Quinta"); break; case 5:Serial.println(", Sexta"); break; case 6:Serial.println(", Sabado"); } }…
Adicionado por Luiz Carlos ao 9:53 em 18 dezembro 2013
vez abrindo o arquivo do seu programa que você produziu na "IDE" como administrador, você consiga resolver esse problema. Por exemplo: Abrir qualquer arquivo diretamente, sendo que ao invés de dar dois cliques no arquivo do tipo .ino, você deverá clicar com botão direito no arquivo e escolher a opção "Executar como administrador"! Já no Linux que é o meu caso, você deverá navegar até a pasta que baixou o instalador do Arduino e executar o programa como administrador! eu extrai a pasta em: /home/pedro/ então abri o terminal e digitei sem as aspas:
"sudo su"
O terminal pedirá a senha do administrador do seu computador, digite e pressione enter!
"cd /home/pedro/arduino-1.8.7/"
"sudo ./arduino"
Ele abrirá a "IDE" do Arduino porém com direitos administrativos. Agora sim irá funcionar! O erro que obtive foi:
Arduino: 1.8.7 (Linux), Placa:"Arduino/Genuino Uno"
O sketch usa 1856 bytes (5%) de espaço de armazenamento para programas. O máximo são 32256 bytes.Variáveis globais usam 28 bytes (1%) de memória dinâmica, deixando 2020 bytes para variáveis locais. O máximo são 2048 bytes.avrdude: ser_open(): can't open device "/dev/ttyACM0": Permission deniedProblema ao carregar para a placa. Veja http://www.arduino.cc/en/Guide/Troubleshooting#upload para sugestões.
Este relatório teria mais informações com"Mostrar a saida detalhada durante a compilação"opção pode ser ativada em "Arquivo -> Preferências"
A solução foi encontrada no fórum do Arduino: https://forum.arduino.cc/index.php?topic=177426.0
no comentário de karlkarl:
-------------------------------------------------------------------------------------------------------------------------------------------------------
Re: How to install uno drivers in ubuntu
#1
Jul 18, 2013, 07:31 pm
Hi Quizmaster,You have to start the Arduino IDE from a root-shell or with root-rights from the directory where it is stored: sudo ./ArduinoAs a standard user you do not belong to groups which allow access to the serial/USB connenctionsSee Note 1 here:http://playground.arduino.cc/Linux/Debian
-------------------------------------------------------------------------------------------------------------------------------------------------------
Boa sorte a todos!
…
Adicionado por Pedro Trindade ao 15:12 em 2 novembro 2018
arduino ao sensor?
na net encontrei um código http://playground.arduino.cc/Code/ModbusMaster
#include <ModbusMaster.h> // instantiate ModbusMaster object as slave ID 2 // defaults to serial port 0 since no port was specified ModbusMaster node(2); void setup() { // initialize Modbus communication baud rate node.begin(19200); } void loop() { static uint32_t i; uint8_t j, result; uint16_t data[6]; i++; // set word 0 of TX to least-significant word of counter (bits 15..0) node.TX(0, lowWord(i)); // set word 1 of TX to most-significant word of counter (bits 31..16) node.TX(1, highWord(i)); // slave 1: write TX to (2) 16-bit registers starting at register 0 result = node.WriteMultipleRegisters(0, 2); // slave 1: read (6) 16-bit registers starting at register 2 to RX result = node.ReadHoldingRegisters(2, 6); // do something with data if read is successful if (result == node.ku8MBSuccess) { for (j = 0; j < 6; j++) { data[j] = node.RX(j); } } }
eu estou com duvida é esta parte que faz a leitura do sensor?
// slave 1: read (6) 16-bit registers starting at register 2 to RX result = node.ReadHoldingRegisters(2, 6);
No local do "6" eu colocaria do endereço que estão no manual?
Obrigado Pessoal.…
//www.seeedstudio.com/wiki/Grove_-_Electricity_Sensor
Esse é código montado por mim , anexei o arquivo com o nome ACS712_GrooveA
http://pastebin.com/8sAQXe6Y
Vejam os resultados aferidos com teste com lampadas incandescentes e um ferro de passar :
Percebam que apenas um bit de diferença na leitura da tensão, faz uma grande diferença na corrente.
Acho que será preciso blindar o cabo que liga o sensor ao Arduino !!
Medições com ACS712-30A
dia 15/ago/2015
Medições Multimetro Fluke 17B+
Tensão REDE = 129,7 Vca (medida)
VCC = 5000 mV / 1024 = 4,8828125
ACS712-30A - Coeficiente estimado = 65,8 mV / A
===========================================
Medição sem carga
Medicao Maxima = 512Tensao de Pico = 2500 mVVmax ACS712 = 0 mVV RMS ACS712 = 0 mVI RMS ACS712 = 0.000 A
===========================================
Lampada Phillips 127 V - 60 W - I Medido = 0,472 A
Medicao Maxima = 520Tensao de Pico = 2539 mVVmax ACS712 = 39 mVV RMS ACS712 = 28 mVI RMS ACS712 = 0.420 A
Medicao Maxima = 521Tensao de Pico = 2544 mVVmax ACS712 = 44 mVV RMS ACS712 = 31 mVI RMS ACS712 = 0.472 A >>> Que beleza !!!
======================================================
Lampada GE 127 V - 40 W - I Medido = 0,326 A
Medicao Maxima = 518Tensao de Pico = 2529 mVVmax ACS712 = 29 mVV RMS ACS712 = 21 mVI RMS ACS712 = 0.315 A
Medicao Maxima = 517Tensao de Pico = 2524 mVVmax ACS712 = 24 mVV RMS ACS712 = 17 mVI RMS ACS712 = 0.262 A
======================================================
Lampada GE 220 V - 50 W - I medido = 0,166 A
Medicao Maxima = 515Tensao de Pico = 2515 mVVmax ACS712 = 15 mVV RMS ACS712 = 10 mVI RMS ACS712 = 0.157 A
=======================================================
Ferro de passar Arno 127 V - 1100 W
I = 1100 / 127 = 8,661 A
Medicao Maxima = 675Tensao de Pico = 3296 mVVmax ACS712 = 796 mVV RMS ACS712 = 563 mVI RMS ACS712 = 8.553 A
Medicao Maxima = 674Tensao de Pico = 3291 mVVmax ACS712 = 791 mVV RMS ACS712 = 559 mVI RMS ACS712 = 8.500 A…
lizado a garra robotica MKII com mais quatroservo motores na base do braco)os servos motores se moveram simultaneamente(um led Ficara Piscando em todo o processo de movimentacao dos servo Motores).
Localizando a latinha na frente de dois pistoes,os servos iram colocar a latinha no compatimento para ser esmagada e recuar ,Logo em seguida um pistao sera acionado esmagando a latinha depois ele ira recuar e o outro pistao sera acionado expusando a latinha para a esteira,depois ele ira recuar(um Buzzer vai ficar emitindo sons em todo momento neste processo).
Depois da latinha na esteira sera acionado dois motores(controlando a velocidade por Potenciometro) E depois de 30s a esteira ira desligar.
Os servos e o motor de passo ira retornar para o local de origem.
Possibilitando assim um novo processo.
Galera Oq eu conssegui fazer esta aqui se puderem me deem uma forcinha ai por favor.
Desde ja agradeco a todos.
#include <Servo.h>
Servo myservo;Servo myservo1;Servo myservo2;Servo myservo3;
int Motor = 50;int Led = 31;
int buzzer = 28;int Potenciometer_Motor = A0;
int acionamento_pistao1 = 2; int acionamento_pistao2 = 3; int recuo_pistao1 = 4; int recuo_pistao2 = 5;
int botton = 6; // escolha o pino de entrada (para o interruptor)int val = 0; // variável para ler o estado do interruptor
void setup() { myservo.attach(7); myservo1.attach(8); myservo2.attach(9); myservo3.attach(10); pinMode(acionamento_pistao1, OUTPUT); pinMode(acionamento_pistao2, OUTPUT);
pinMode(recuo_pistao1, OUTPUT); pinMode(recuo_pistao2, OUTPUT);
digitalWrite(recuo_pistao1, HIGH); digitalWrite(recuo_pistao2, HIGH);
pinMode(botton,INPUT); pinMode(buzzer, OUTPUT);
myservo.write(0); myservo1.write(0); myservo2.write(0); myservo3.write(0); }
void loop(){ val = digitalRead(botton); // ler o valor de entrada if (val == HIGH) { // verificar se a entrada é HIGH (interruptor livre) myservo.write(180); delay(50); myservo1.write(180); delay(50); myservo2.write(180); delay(50); myservo3.write(180); //Motor da Base delay(50);
//Acionamento dos Pistoes
tone(buzzer,1500);//Ligando o buzzer. delay(500);
digitalWrite(acionamento_pistao1, HIGH); delay(10000); digitalWrite(recuo_pistao1, HIGH); delay(10000); digitalWrite(acionamento_pistao2, HIGH); delay(10000); digitalWrite(recuo_pistao2, HIGH);
noTone(buzzer);//Desligando o buzzer. delay(500);
//Acionando Esterira
digitalWrite(Led, HIGH); delay(1000); digitalWrite(Led, LOW); delay(1000);
val = analogRead(Potenciometer_Motor);
analogWrite(Motor, val / 4); delay(20000); digitalWrite(Motor,LOW);
//Retorno dos Servo Motores myservo.write(0); myservo1.write(0); myservo2.write(0); myservo3.write(0);
} else{ myservo.write(0); myservo1.write(0); myservo2.write(0);
} }
…
Adicionado por Gleison Frota ao 18:10 em 31 março 2016