Radíme si navzájem

Datum
Vložil
Titulek

MPU-6050

Prosím potřeboval bych poradit s čidlem MPU-6050.
Pohyb je jen v jedné ose.
Čidlo se může naklánět ze strany na stranu v povolené míře, když
tuhle míru překročí rozsvítí se LED dioda.
Moc děkuji za odpověď.

Datum
Vložil
Titulek

Re: MPU-6050

Třeba si z toho něco vybereš.
// ALARM - odeslani SMS
#include "Wire.h"
#include "Math.h"
#include "I2Cdev.h"
#include "MPU6050.h"
#include <LiquidCrystal.h> // import knihovny DISPLEJE
LiquidCrystal lcd (12, 13, 8, 9, 10, 11); // piny displeje UNO - RS, E, D4, D5, D6, D7
// LiquidCrystal lcd (51, 53, 48, 50, 52, 49); // piny displeje MEGA -
#define napajeni1 2 // napajeni UGM1
#define vstup1 3 // vstup UGM1 negovany

// vytvoříme objekt s názvem
MPU6050 akcelerometr;

const float pi = 3.141592;
const int pocet_vzorku = 10; // pocet vzorku mereni pro vyhodnoceni
// pojmenovani promenych
int ax, ay, az;
float x, y, z;
int pocet;
float _angle_x, angle_x, _angle_y, angle_y;
long ax_p, ay_p, az_p;
float pamet_x, pamet_y; // pamet pocatecni polohy
float pom1f;
int pom1i, pom2i;

void setup()
{
lcd.begin(16,4); // parametry displeje
// inicializace I2C
Wire.begin();
// zvolime vyssi rychlost pro seriovy port
Serial.begin(38400);
// inicializace akcelerometru
akcelerometr.initialize();
// Kdyz to hodi chybu vypiseme hlasku
if (akcelerometr.testConnection());
Serial.println("Spojeni OK...");
pinMode(napajeni1,OUTPUT); // napajeni UGM1
pinMode(vstup1,OUTPUT); // vstup do UGM1
digitalWrite(napajeni1,0); digitalWrite(vstup1,0);
delay(10000);
zjistiSklonNaklon();
pamet_x = angle_x;
pamet_y = angle_y;
}

void loop()
{
zjistiSklonNaklon();
displej1();
pom1f = abs(pamet_x - angle_x);
if (pom1f > 2 ) // hranice prekroceni
digitalWrite(napajeni1,1);

pom1f = abs(pamet_y - angle_y);
if (pom1f > 2 ) // hranice prekroceni
digitalWrite(napajeni1,1);

if (digitalRead(napajeni1))
{
udalost1();
// delay(1000);
zjistiSklonNaklon();
pamet_x = angle_x;
pamet_y = angle_y;
}
}

void displej1()
{
lcd.clear();
lcd.setCursor(0, 0); lcd.print(" X = "); lcd.print(angle_x);
lcd.setCursor(0, 1); lcd.print(" Y = "); lcd.print(angle_y);
}

void zjistiSklonNaklon()
{
// zjisti vsechny hodnoty z akcelerometru
akcelerometr.getAcceleration(&ax, &ay, &az);
pocet = 0;
ax_p = 0;
ay_p = 0;
az_p = 0;
{
ax_p = ax_p + ax;
ay_p = ay_p + ay;
az_p = az_p + az;
pocet++; // scitame pocet vzorku
}
while(pocet > pocet_vzorku);

// zjistime prumerne hodnoty
x = ax_p/pocet_vzorku;
y = ay_p/pocet_vzorku;
z = az_p/pocet_vzorku;
// vypočteme sklon a náklon
angle_x = atan2(x, sqrt(square(y) + square(z)) )/(pi/180);
angle_y = atan2(y, sqrt(square(x) + square(z)) )/(pi/180);
}

void udalost1()
{
delay(20000); // pro prihlaseni UGM do site
digitalWrite(vstup1,1); // zmena vstupu UGM1 pro odeslani SMS
delay(2000);
digitalWrite(vstup1,0);
delay(20000);
digitalWrite(napajeni1,0); // nevypinat napajeni pokud ma byt zameritelne
}

Datum
Vložil
Titulek

Re: Re: MPU-6050

Pokud nebude mět být vypínat napájení je třeba upravit ( ne jen smazat).

Datum
Vložil
Titulek

Smíchání kódů

Dobrý den, potřeboval bych aby se mi ukazoval status tlačítka a abych mohl nastavovat servo. Zde je nastavovaní serva a po něm je status tlačítka.

#include <SPI.h>
#include <Ethernet.h>
#include <Servo.h>
Servo myservo; // create servo object to control a servo


byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address
byte ip[] = { 192, 168, 0, 14 }; // ip in lan
byte gateway[] = { 192, 168, 0, 1 }; // internet access via router
byte subnet[] = { 255, 255, 255, 0 }; //subnet mask
EthernetServer server(80); //server port
String readString;

//////////////////////

void setup(){

pinMode(5, OUTPUT); //pin selected to control
myservo.attach(7); //the pin for the servo control
//start Ethernet
Ethernet.begin(mac, ip);
server.begin();

//enable serial data print
Serial.begin(9600);
Serial.println("server servo/pin 5 test 1.0"); // so I can keep track of what is loaded
}

void loop(){
// Create a client connection
EthernetClient client = server.available();
if (client) {
while (client.connected()) {
if (client.available()) {
char c = client.read();

//read char by char HTTP request
if (readString.length() < 100) {

//store characters to string
readString += c;
//Serial.print(c);
}

//if HTTP request has ended
if (c == '\n') {

///////////////
Serial.println(readString); //print to serial monitor for debuging

client.println("HTTP/1.1 200 OK"); //send new page
client.println("Content-Type: text/html");
client.println();

client.println("<HTML>");
client.println("<HEAD>");
client.println("<TITLE>Arduino Servo WEB</TITLE>");
client.println("</HEAD>");
client.println("<BODY>");

client.println("<H1>Link para controlar un servo</H1>");

client.println("<a href=\"/?on\"\">IZQUIERDA</a>");
client.println("<a href=\"/?off\"\">DERECHA</a>");

client.println("</BODY>");
client.println("</HTML>");

delay(1);
//stopping client
client.stop();

///////////////////// control arduino pin
if(readString.indexOf("?on") >0)//checks for on
{
myservo.write(10);
digitalWrite(5, HIGH); // set pin 4 high
Serial.println("Led On");
}
if(readString.indexOf("?off") >0)//checks for off
{
myservo.write(110);
digitalWrite(5, LOW); // set pin 4 low
Serial.println("Led Off");
}
//clearing string for next read
readString="";

}
}
}
}
}

#include <SPI.h>
#include <Ethernet.h>

// MAC address from Ethernet shield sticker under board
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192, 168, 0, 22); // IP address, may need to change depending on network
EthernetServer server(80); // create a server at port 80

String HTTP_req; // stores the HTTP request

void setup()
{
Ethernet.begin(mac, ip); // initialize Ethernet device
server.begin(); // start to listen for clients
Serial.begin(9600); // for diagnostics
pinMode(3, INPUT); // switch is attached to Arduino pin 3
}

void loop()
{
EthernetClient client = server.available(); // try to get client

if (client) { // got client?
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) { // client data available to read
char c = client.read(); // read 1 byte (character) from client
HTTP_req += c; // save the HTTP request 1 char at a time
// last line of client request is blank and ends with \n
// respond to client only after last line received
if (c == '\n' && currentLineIsBlank) {
// send a standard http response header
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: keep-alive");
client.println();

if (HTTP_req.indexOf("ajax_switch") > -1) {

}
else {
client.println("<!DOCTYPE html>");
client.println("<html>");
client.println("<head>");
client.println("<title>Arduino,zamek.</title>");
client.println("<script>");
client.println("function GetSwitchState() {");
client.println("nocache = \"&nocache=\"\+ Math.random() * 1000000;");
client.println("var request = new XMLHttpRequest();");
client.println("request.onreadystatechange = function() {");
client.println("if (this.readyState == 4) {");
client.println("if (this.status == 200) {");
client.println("if (this.responseText != null) {");
client.println("document.getElementById(\"switch_txt\")\.innerHTML = this.responseText;");
client.println("}}}}");
client.println("request.open(\"GET\", \"ajax_switch\" + nocache, true);");
client.println("request.send(null);");
client.println("setTimeout('GetSwitchState()', 1000);");
client.println("}");
client.println("</script>");
client.println("</head>");
client.println("<body onload=\"GetSwitchState()\">");
client.println("<h1>Dverní status a zamek.</h1>");
client.println("<p id=\"switch_txt\">Neni signal.</p>");
client.println("</body>");
client.println("</html>");
}
// display received HTTP request on serial port
Serial.print(HTTP_req);
HTTP_req = ""; // finished with request, empty string
break;
}
// every line of text received from the client ends with \r\n
if (c == '\n') {
// last character on line of received text
// starting new line with next character read
currentLineIsBlank = true;
}
else if (c != '\r') {
// a text character was received from client
currentLineIsBlank = false;
}
}
}
delay(1);
client.stop();
}
}

// send the state of the switch to the web browser
void GetSwitchState(EthernetClient cl)
{
if (digitalRead(3)) {
cl.println("Dvere jsou zavrene.");
}
else {
cl.println("Dvere jsou otevrene.");
}
}

Datum
Vložil
Titulek

dvě SPI zařízení

Dobrý den všem, pracuji na RFID přístupovém systému, který má jednak ovládat el. zámek a také zapisovat přístupy na SD kartu. Mám arduino UNO a k němu připojený modul LCD Nokia 5110, modul RTC, modul RFID RC522, modul relé a potřebuji ještě připojit modul SD karty, ale tady jsem skončil. Doposud mi funguje vše jak bych si přál, ID čipů se mi zobrazuje s datumem a časem na LCD i na serial monitoru, ale potřebuji to ještě zapsat na SD, ale mám obsazeny všechny piny na arduinu. Modul RFID je připojen k SPI, modul SD je také SPI, uměl by mi někdo poradit jakým způsobem připojit tyto dva moduly k SPI sběrnici? Na netu jsem zjistil že to jde, ale nevím jak :-(

Datum
Vložil
Titulek

Re: dvě SPI zařízení

SPI sběrnice má všechna zařízení připojena paralelně na pinech MOSI, MISO a SCLK. A pak je ke každému zařízení zvlášť natažen drát SS (Slave Select) též označovaný např. jako nCS, CS, CSB, CSN, EN, nSS, STE nebo SYNC. A právě pomocí tohoto pinu 'master' zařízení ovládá se kterým 'slave' zařízením právě komunikuje. Více info např. zde: https://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus

Datum
Vložil
Titulek

Arduino+LCD 2x16+Button+LED

Zdravím,
uměl by mi někdo poradit, jak vytvořit menu, kde bych pomocí tlačítek ovládal LEDky- ON/OFF a jejich jas. Celé by se to zobrazovalo na LCD, např. LED 1 ON jas 50%.
Děkuji za odpověď.

Datum
Vložil
Titulek

GSM a Arduino

Zdravím chcel by som sa opýtať či robil niekto s GSM modulom a arduinom Mega 2560 lebo som s tým zacal a nikde som nenašie nejaké informácie ohľadom toho. Ak by sa niekto našiel bol by som rád ak by sa mi ozval buď tu alebo na mail richard.huray@gamil.com Ďakujem

Datum
Vložil
Titulek

Re: GSM a Arduino

https://tronixstuff.com/2014/01/08/tutorial-arduino-and-sim900-gsm-modules

Datum
Vložil
Titulek

Rozsvecovani diod

Ahoj, začínám s Arduinem od píky, prošel jsem základy na webu. Potřeboval bych poradit s úlohou postupného spínání diod více tlačítky: po startu programu se rozsvítí první dioda, po stisku 1. tlačítka se tato dioda zhasne a rozsvítí se druhá, po stisku 2. tlačítka se zhasne druhá a rozsvítí se třetí atd. Díky předem.

Datum
Vložil
Titulek

Re: Rozsvecovani diod

Ahoj, napsal jsem jednoduchý kód pro požadovanou činnost. Jde to napsat různými způsoby, trochu to učesat, nadeklarovat proměnné, použít SWITCH/CASE atd...
Nicméně jako ukázka to snad bude stačit .


Pěkný den všem ;-)



Zapojení:
Tlačítka jsou zapojena k pinům D4,5,6 a spínají proti GND, přičemž se využívají interní pull-up rezistory.
LED jsou zapojeny přes rezistory k pinům D7,8,9 a GND.



void setup()
{
pinMode(4, INPUT_PULLUP); //nastaví pin jako vstupní
pinMode(5, INPUT_PULLUP);
pinMode(6, INPUT_PULLUP);

pinMode(7,OUTPUT); //nastaví pin jako výstupní
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);

zhasni_vse(); //zhasne všechny diody
digitalWrite(5,HIGH); // rozsvítí první diodu
}

void loop()
{
if(digitalRead(4) == LOW)
{
zhasni_vse();
digitalWrite(7, HIGH);
}
if(digitalRead(5) == LOW)
{
zhasni_vse();
digitalWrite(8, HIGH);
}
if(digitalRead(5) == LOW)
{
zhasni_vse();
digitalWrite(9, HIGH);
}
}

void zhasni_vse() // zhasne všechny LED
{
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
}

Datum
Vložil
Titulek

Re: Re: Rozsvecovani diod

Když to teď vidím ve větším okně, tak jsem si všiml, že je tam dvakrát digitalRead(5) , jednou tam má být digitalRead(6)

Datum
Vložil
Titulek

Re: Rozsvecovani diod

Možná by se tomu nemuselo říkat postupné rozsvěcování, když to neovládáš jedním tlačítkem, ale každou led samostatně svým tlačítkem, ne? Vychytávka by mohla být doplnit do programu kontrolu zda nejsou stisknuta dvě různá tlačítka naráz a v takovém případě vše zhasnout ;-)
Co třeba nějak takhle?

void loop()
{
if(digitalRead(4) == LOW)
{
zhasni_vse();
digitalWrite(7, HIGH);
}
if(digitalRead(5) == LOW)
{
zhasni_vse();
digitalWrite(8, HIGH);
}
if(digitalRead(6) == LOW)
{
zhasni_vse();
digitalWrite(9, HIGH);
}

// Stisk alespoň dvou tlačítek najednou = zhasni vše
byte stisknutoTlacitek = 0;
if(digitalRead(4) == LOW) {
stisknutoTlacitek++; //proměnnou stisknutoTlacitek zvetši o 1
}
if(digitalRead(5) == LOW) {
stisknutoTlacitek++;
}
if(digitalRead(6) == LOW) {
stisknutoTlacitek++;
}
if(stisknutoTlacitek > 1)
{
zhasni_vse();
}
}

Datum
Vložil
Titulek

chyba kompilácie

zdravým mám jeden problém pri kompilácii mi vyhadzuje nasledujúcu chybu jedná sa o program pre včelársku váhu ktorá posiela správy sms o hmotnosti atd. ten riadok by sa mal týkať toho že za určitej okolnosti pošle sms s textom ktorí sa má zadať za lomítko ale pokiaľ viem tak lomitkom sa ohraničuje komentár cez viac riadkov. Ak by ste mi pomohli bol by som rád.
Imker_Stockwaage_V1_31.ino:44:47: error: expected unqualified-id before '/' token
Chyba kompilace.
tá chyba je v tom poslednom riadku
// Daten für Netzbetreiber der Handykarte
#define APN "pinternet.interkom.de" // APN des Netzwerkdienstes. (hier O2)
#define Username "" // Username APN
#define Passwort "" // Passwort APN
#define PIN "" // Pin der Sim Karte
char phone_number[]="+49XXXXXX"; //anzurufende Nummer bei Schwarmalarm
char SMS_number[]="+49XXXXXX"; // SMS Nummer für Akkualarm und SMS Übertragung
char SMS_Kurzmitteilungsnummer[]="+49XXXXXX"; /Spezifische SMS Kurzmitteilungsnummer des Handykartenanbieters

Datum
Vložil
Titulek

Re: chyba kompilácie

chyba je v poznamke, nema dve lomitka, spravne to ma byt takto:
char SMS_Kurzmitteilungsnummer[]="+49XXXXXX"; //Spezifische SMS Kurzmitteilungsnummer des Handykartenanbieters

Datum
Vložil
Titulek

Re: Re: chyba kompilácie

To som skúšal ale potom mi vyhodí mikion dalších chýb

Datum
Vložil
Titulek

Sériová komunikace

Dobrý večer , mohu se Vás zeptat jak co nejjednodušeji udělat, abych četl s arduinem sériovou linku a přijímal tři znaky. Například přijde mi : im1 a arduino rozsviti led. Teď mi to funguje ale jen po jednom znaku. Ještě dodám že přijde najednou více těch znaků například im1im2im3im4, takže by se to muselo v arduinu asi dát nak do řetězce a postupně vyčítat, ale vůbec nevím jak to udělat. Za každou radu budu moc vděčný. Moc děkuji

Datum
Vložil
Titulek

Re: Sériová komunikace

Pokud to chceš opravdu "co nejjednodušeji", tak neposílej a nečti 3znaky, ale jenom jeden - např. A, B a C.

Datum
Vložil
Titulek

Možná hloupý dotaz

Zdravím.
Potřebuji led signalizaci zapnutého přístroje do jiné místnosti v budově ( cca 15m uvnitř 1 zeď )
Zajímal jsem se o arduino a chtěl koupit některou desku na hraní s elektronikou a pak jsem našel modul NRF24L01 který umí příjmat a vysílat asi data a bůhví co ještě..
Chtěl jsem se zeptat, jestli by to moje potřeby splnilo a také, jestli po případném naprogramování přes některou arduino desku lze použít modul samostatně nebo všechny moduly jdou použít jen s nějakou arduino-deskou?

Datum
Vložil
Titulek

Re: Možná hloupý dotaz

Ano, jde to. Ten NRF24L01 je 2.4Ghz tak umí vysílat a příjmat data.Ano splní. ty NR24L01 umí komunikovat s jiným jakíkoliv NR24L01 teda 2.4Ghz frekvencí. Ale pro zikaní dat zda li je přístroj zapnut musí se něco použít to co zjistí zda je zapnut nebo ne a pak přes ten modul pošle data a další arduino s tým modulem to příjme a rosvítí nebo zhasne kotrolku led.

Datum
Vložil
Titulek

Re: Možná hloupý dotaz

zbytečně složitý, na těch 15m bych natáhl kabel a zeď někde v rohu kde to není vidět provrtal. Nebo jestli nechceš vrtat a tahat kabel použij něco jako toto: https://www.santy.cz/bezdratova-komunikace-c32/modul-433mhz-arduino-sada-i63/ to funguje jako seriová linka.

Datum
Vložil
Titulek

Zastavení

Ahoj, sem začátečník a potřeboval bych poradit mam program, který mi funguje, ale potřebuji ho pomocí dvou tlačítek zastavit a nevím jak. Mam arduino uno a dva 7 segmentové displeje při připojení 2 pinu na zem se mi rozjedou, ale nevím jak zadat příkaz pro zastavení každého segmentu samostatně pomocí 2 tlačítek.
https://pastebin.com/uKczydVs

Datum
Vložil
Titulek

Meteostanice s SHT21+BMP085+netshield

Dobrý večer,

Potřebuji poradit se zádrhelem na meteostanici a SHT21 a BMP085: stanice posílá data na thingspeak, ale po každém restartu je třeba sdělit aktuální tlak čidlu BMP85 - kalibrovat jej. Potřebuji tedy poslat přes netshield kalibrační 6timístné číslo. Jak to udělat elegantně přes netshield?
Kód pošlu na vyžádání, nechci zaplevelovat diskusi.

Děkuji za info



Datum
Vložil
Titulek

Re: Meteostanice s SHT21+BMP085+netshield

Proc potrebuje meteostanice vedet tlak, kdyz ho ma z cidla? Pro prepocet tlaku na hladinu more je barometricka rovnice viz https://www.amut.net/domains/amut.net/article.php?id=18 , jinak normalne tlak na meteo pomoci arduina merim na vice stanicich- meteo.amut.net

Datum
Vložil
Titulek

Re: Re: Meteostanice s SHT21+BMP085+netshield

Máte pravdu,

děkuji a už budu datasheety číst pořádně.

Datum
Vložil
Titulek

Akcelerometr a I2C

Dobrý den, poradil by nějaký odborník začátečníkovi? Jednoduchý program na čtení hodnot z akcelerometru v komunikaci I2C.
Děkuji moc za radu.

Datum
Vložil
Titulek

Pomóóóc!!

Dobrý den. Potřebuji pomoc s kódem. Umí spínat jenom jednu led diodu ale ja potřebuji tři diody na tři tlačítka. Děkuji.
Code:

boolean svetlo = false; // Pomocná hodnota světlo


void setup()
{
pinMode(5, OUTPUT);
pinMode(2, INPUT);
}
void loop()
{

if (digitalRead(2))
{
if (svetlo) svetlo = false; else svetlo = true;
digitalWrite(5, svetlo);
while (digitalRead(2)) delay(50);
}
}

Datum
Vložil
Titulek

Re: Pomóóóc!!

boolean svetlo1 = false;
boolean svetlo2 = false;
boolean svetlo3 = false;
void setup()
{
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);

pinMode(2, INPUT);
pinMode(3, INPUT);
pinMode(4, INPUT);
}
void loop()
{

if (digitalRead(2))
{
svetlo1 = !svetlo1;
digitalWrite(5, svetlo1);
while (digitalRead(2)) delay(50);
}

if (digitalRead(3))
{
svetlo2 = !svetlo2;
digitalWrite(6, svetlo2);
while (digitalRead(3)) delay(50);
}

if (digitalRead(4))
{
svetlo3 = !svetlo3;
digitalWrite(7, svetlo3);
while (digitalRead(4)) delay(50);
}

}

Datum
Vložil
Titulek

Re: Re: Pomóóóc!!

Prominte ale nefunguje to kdyby tam bylo udělej světlo a nopak tak by to fungovalo ale za to se musí zmáčkou 1. 2. az pak třetí se zapne když ho chci vypnout ta 1. 2. a pka 3. a vypnese :-(

Datum
Vložil
Titulek

Re: Re: Re: Pomóóóc!!

Asi nevím jak to myslíte. Jak by to teda podle vás mělo být ?

Záznamy: 121 - 150 ze 324

<< 3 | 4 | 5 | 6 | 7 >>

Vyhledávání

arduino8.cz © 2015 Všechna práva vyhrazena.