From 37e4ad6febbb296f7d5e67efedcba22d180797e8 Mon Sep 17 00:00:00 2001 From: Nikos Kapraras Date: Tue, 15 Sep 2020 20:56:36 +0300 Subject: [PATCH] updated README --- README.md | 72 +++++++++++++++++++++---- assets/FreqCountESP-logo.png | Bin 0 -> 17169 bytes examples/FreqCountLcd/FreqCountLcd.ino | 6 +-- 3 files changed, 65 insertions(+), 13 deletions(-) create mode 100644 assets/FreqCountESP-logo.png diff --git a/README.md b/README.md index 4eca17a..4c63c5f 100644 --- a/README.md +++ b/README.md @@ -1,27 +1,79 @@ -# FreqCountESP +

+
+ FreqCountESP +
+ FreqCountESP +
+

-## Table of Contents +

A frequency counter library for esp32

+ +

+ + + Gitter + +

+ +### Table of Contents - [About](#about) -- [Getting Started](#getting_started) +- [Installation](#installation) - [Usage](#usage) +- [Credits](#credits) - [License](#license) ## About -Write about 1-2 paragraphs describing the purpose of your project. +A frequency counter library for esp32. It counts the numbers of pulses on a specified pin during a fixed time frame using native interrupts and timers. It only supports one instance per sketch for now. + +## Installation -## Getting Started +To use this library you have to import it into Arduino IDE as follows: +1. Download or clone this repository as a zip file. +2. Go to "Sketch" > "Include Library" > "Add .ZIP library..." and select the zip file to import it. -These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See [deployment](#deployment) for notes on how to deploy the project on a live system. +## Usage -### Installing +#### Include the library in the sketch -Use the arduino library manager or download the latest realease and import it as a zip. +```C++ +#include "FreqCountESP.h" +``` -## Usage +#### Initialize the instance + +Set which pin to use and the length of the time frame in milliseconds. + +```C++ +void setup() +{ + int inputPin = 14; + int timerMs = 1000; + FreqCountESP.begin(inputPin, timerMs); +} +``` + +#### Read the frequency + +Wait for a new value to become available and read it by calling the `read()` method. + +```C++ +void loop() +{ + if (FreqCountESP.available()) + { + uint32_t frequency = FreqCountESP.read(); + // Do something with the frequency... + } +} +``` + +## Credits -Add notes about how to use the system. +* [FreqCount library for Arduino & Teensy boards](https://www.pjrc.com/teensy/td_libs_FreqCount.html) +* [Frequency Icon](https://www.flaticon.com/free-icon/pulse_597841?term=frequency&page=1&position=2) ## License diff --git a/assets/FreqCountESP-logo.png b/assets/FreqCountESP-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..59ee3c58b7444abdb9a1a230a8dcd4f53fedf100 GIT binary patch literal 17169 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 Ye@RRBf -LiquidCrystal_I2C lcd(0x27); +LiquidCrystal_I2C lcd(0x27); int inputPin = 14; int timerMs = 1000; @@ -9,9 +9,9 @@ int timerMs = 1000; void setup() { FreqCountESP.begin(inputPin, timerMs); - + // setup lcd - lcd.begin(16,2); + lcd.begin(16, 2); lcd.clear(); lcd.home(); }