Zobrazují se příspěvky se štítkemvstup. Zobrazit všechny příspěvky
Zobrazují se příspěvky se štítkemvstup. Zobrazit všechny příspěvky

čtvrtek 2. února 2017

9. Dálkoměr - HC-SR04

Měříme vzdálenost s HC-SR04


Tutorial:
http://howtomechatronics.com/tutorials/arduino/ultrasonic-sensor-hc-sr04/

Video:
https://www.youtube.com/watch?v=kQRYIH2HwfY

eBay - 30,-Kč
http://www.ebay.com/itm/121928420335?_trksid=p2057872.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT


Poznámka:
Při testování na pinech 2 a 3 mi to nefungovalo (asi je na nich navěšena seriová linka), pro to jsem je posunul o dva piny vedle a hned se všechno rozjelo.

Kód:
#define ECHOPIN 4 // Echo pin z HC-SC04 na pin 4
#define TRIGPIN 5 // Trig pin z HC-SC04 na pin 5
void setup()
{
  //Nastaví sériovou komunikaci
  Serial.begin(9600);
  //Nastaví pin 4 jako vstupní
  pinMode(ECHOPIN, INPUT);
  //Nastaví pin 5 jako výstupní
  pinMode(TRIGPIN, OUTPUT);
}
void loop()
{
    // Vyšle impuls do modulu HC-SR04
    digitalWrite(TRIGPIN, LOW);
    delayMicroseconds(2);
    digitalWrite(TRIGPIN, HIGH);
    delayMicroseconds(10);
    digitalWrite(TRIGPIN, LOW);
 
    // Změří puls
    float distance = pulseIn(ECHOPIN, HIGH);
 
    // Spočítá vzdálenost
    distance= distance*0.017315f;
 
    // odešle informace na sérivý port
    Serial.println(distance); // pro zobrazení na plotru
    delay(50);
    Serial.print(distance); // Pro zobrazení na monitoru
    // Serial.print("cm\n");
    // počká 1 sekundu
    // delay(1000);
}





úterý 29. prosince 2015

11. Teploměr

LM35DZ
Cena: 49,80 Kč
Tento snímač pracuje s napětím 5V Problém u Netduina je v tom, že vstupy pracují pouze s napětím 3,3V Digitální vstupy jsou narozdíl od analogových 5V tolerantní (http://www.netduino.com/netduinoplus/specs.htm).

U Arduina je to v pořádku protože vstupy pracují do 5V a tak získáme správnou hodnotu.
na stránce popisující Arduino Mico (http://www.arduino.cc/en/Main/ArduinoBoardMicro) se píše: že každý analogový vstup má 10ti bitové rozlyšení 1024 různých hodnot. Vstupní hodnota se měří v rozsahu 0 až 5V v závislosti na typu desky. U 5V desek je to 5V a u 3,3V desek zase 3,3V. Horní mez se dá nastavit příkazem analogReference()

Tutorial
http://www.theorycircuit.com/temperatur-sensor-lm35-with-arduino/
http://medialappi.net/lab/equipment/sensors/environment-ntc-thermistor/


http://forums.netduino.com/index.php?/topic/471-analog-input-readings-lm35-attached/
Muy, the lowest operating voltage specified by the datasheet is 4 volts. Incidentally, the highest voltage the temp pin should output is 1.7ish volts, so my plan for the LM35 is to run it off the 5 volt pin of the netduino thinking that it *should* not exceed 3.3 volts even though it is on a 5v circuit. I'm also curious to see if the thing works off 3.3V anyway. I've just started testing mine out and haven't gotten it working yet. I'll post back up if I do.

TMP35 má operační napětí 2.7 V to 5.5 V proto by měl být použitelný i s NetDuinem.
http://www.gme.cz/img/cache/doc/530/093/tmp36gt9z-datasheet-1.pdf



Nízkonapěťový snímač teploty, -40°C to 125°C, ±0,5°C linearita, kalibrovaný v °C, TO92


Zdroj: http://www.facstaff.bucknell.edu/mastascu/elessonsHTML/Sensors/TempLM35.html
http://www.gme.cz/teplotni-cidla-s-analogovym-vystupem/lm35dz-p313-909/
http://www.gme.cz/dokumentace/313/313-909/dsh.313-909.1.pdf



Další teploměr digitální
http://www.gme.cz/ds18s20-p530-070
komunikační protokol
http://playground.arduino.cc/Learning/OneWire

pátek 5. července 2013

Lekce 4. Jak zjistit stav tlačítka?

V této lekci Vám ukážu, jak jednoduše zjistit stav tlačítka a reagovat jeho stisknutí. NetDuino Plus má na své desce jedno tlačítko, které můžeme pro tuto lekci využít. Ve výchozím nastavení toto tlačítko slouží jako Reset. Pokud ale v programu deklarujeme vstupní port pro pin s názvem Pins.ONBOARD_SW1, přestane tlačítko restartovat NetDuino a začne nám vracet jeho stav. Stav tlačítka zjistíme pomocí metody Read().


Inicializace vstupního portu:
Při inicializaci zadáme jako první parametr číslo pinu tlačítka, které je přímo na desce NetDuino Plus s názvem Pins.ONBOARD_SW1.
Jako další parametr je takzvaný GlitchFilter. K jeho vysvětlení se dostaneme v některé z dalších lekcí. Prozatím budeme používat hodnotu false. No a jako poslední je parametr ResistorMode. U tohoto parametru se trošku zastavím protože při jeho použití se můžete trošku zamotat jako já.
Tento parametr je totiž možné nastavovat hodnotami ze dvou namespace a to:
using Microsoft.SPOT.Hardware;
a nebo
using SecretLabs.NETMF.Hardware.NetduinoPlus;

Pokud totiž použijete výčtový typ z namespace Microsoftu, tak budete mít k dispozici enumerátor Port.ResistorMode který má tři možnosti:
  1. Disable
  2. PullUp
  3. PullDown
Naopak enumerátor ResistorModes.PullUp  z namespace NetduinoPlus má pouze dvě hodnoty.
  1. Disable
  2. PullUp
private static readonly InputPort Btn = new InputPort(Pins.ONBOARD_SW1, false, ResistorModes.Disabled);

Pokud se pokusíte deklarovat port v modu PullDown tak při spouštění programu dostanete výjimku System.ArgumentException.
Pull-Up - znamená, že vstupní pin je přes rezistor připojen na Log1 a stisknutím tlačítka se dostává do Log0. Protože je to naopak něž bychom očekávali (při stisku tlačítka je na vstupu LOG1) je toto nastavení invertující.
Pull-Down - je opačná varianta k Pull-Up. Vstupní pin je přes rezistor stažen na Log0 a stisknutím tlačítka se dostává do Log1. Toto nastavení je tedy neinvertující

MikroProcesor má nejspíše natvrdo zapojen odpor ke kladnému napětí a druhá varianta (PullDown) není tedy možná. Toto zapojení se používá k omezení šumu na vstupu kdy hodnota není ani v LOG1 ani v LOG0 a celý obvod se tak může chovat nepředvídatelně.

Podrobnější vysvětlení naleznete v tomto videu http://www.youtube.com/watch?v=BxA7qwmY9mg [EN]

Video:

Zdrojový kód:
namespace Lekce04
{
    using Microsoft.SPOT.Hardware;
    using SecretLabs.NETMF.Hardware.NetduinoPlus;

    public class Program
    {
        private static readonly InputPort Btn = new InputPort(Pins.ONBOARD_SW1, false, ResistorModes.Disabled);

        private static readonly OutputPort Led = new OutputPort(Pins.ONBOARD_LED, false);

        public static void Main()
        {
            while (true)
            {
                Led.Write(Btn.Read());
            }
        }
    }
}
V dalším díle se podíváme jak fungují přerušení.
Zdrojové kódy ze všech lekcí jsou dostupné na https://csharpduino.codeplex.com/
Budu rád za každý komentář a konstruktivní kritiku.