arduino-uno


arduino uno R3 input pins with gsm shield


In my project i need to read input data from water flow sensor. It works well when i wire water flow with pin 2 or 3 , but does not work work when i wire it to any other pins. It becomes a problem because i need to use GSM shield and you know pins 2,3 and 7 reserved for arduino and modem
the code:
#include <LiquidCrystal.h> // initialize the library with the numbers of the interface pins
LiquidCrystal lcd(5, 6, 9, 10, 11, 12);
volatile int TopsFan; //measuring the rising edges of the signal
int result;
int pin = 2; //The pin location of the sensor
void rpm () //This is the function that the interrupt calls
{
TopsFan++; //This function measures the rising and falling edge of the hall effect sensors signal
}
// The setup() method runs once, when the sketch starts
void setup()
{
pinMode(pin, INPUT); //initializes digital pin 2 as an input
Serial.begin(9600); //This is the setup function where the
serial port is initialized(USB port)
attachInterrupt(0, rpm, RISING); // the interrupt is attached
}
lcd.begin(16, 2); // set up the LCD's number of columns and rows
lcd.print("The water flow: "); // Print a message to the LCD.
// the loop() method runs over and over again,
// as long as the Arduino has power
void loop ()
{
TopsFan = 0; //Set TopsFan to 0 ready for calculations
sei(); //Enables interrupts
delay (1000); //Wait 1 second
cli(); //Disable interrupts
result = (TopsFan * 60 / 7.5); //(Pulse frequency x 60) /
7.5Q, = flow rate in L/min
lcd.setCursor(0, 1); //prepare the cursor on the screen
lcd.print(result, DEC); //Prints the number calculated above
lcd.print(" L/min\r\n"); //Prints "L/min" and returns a new
line
}
Pls read https://www.arduino.cc/en/Reference/AttachInterrupt :
...
...
The first parameter to attachInterrupt is an interrupt number. Normally you should use digitalPinToInterrupt(pin) to translate the actual digital pin to the specific interrupt number. For example, if you connect to pin 3, use digitalPinToInterrupt(3) as the first parameter to attachInterrupt.
Board Digital Pins Usable For Interrupts
Uno, Nano, Mini, other 328-based 2, 3
...
...
It would seem you need to try a different approach, perhaps bypassing interrupts altogether. Something like the following:
#include <LiquidCrystal.h> // initialize the library with the numbers of the interface pins
int count_rpm(void) ;
LiquidCrystal lcd(5, 6, 9, 10, 11, 12);
int flow_pin = 5 ; //The pin location of the sensor (5 or whatever suits you)
// The setup() method runs once, when the sketch starts
void setup()
{
pinMode(flow_pin, INPUT); //initializes digital pin 2 as an input
Serial.begin(9600); //This is the setup function where the serial port is initialized(USB port)
lcd.begin(16, 2); // set up the LCD's number of columns and rows
lcd.print("The water flow: "); // Print a message to the LCD.
}
// the loop() method runs over and over again,
// as long as the Arduino has power
void loop ()
{
int result;
result = (count_rpm() * 60 / 7.5); //(Pulse frequency x 60) / 7.5Q, = flow rate in L/min
lcd.setCursor(0, 1); //prepare the cursor on the screen
lcd.print(result, DEC); //Prints the number calculated above
lcd.print(" L/min\r\n"); //Prints "L/min" and returns a new line
}
int count_rpm(void)
{
long start = millis() ;
int count = 0 ;
boolean current_state ;
boolean previous_state = digitalRead(flow_pin) ;
for( ; millis()-start <= 1000 ; )
{
current_state = digitalRead(flow_pin) ;
if (current_state && !previous_state)
count++ ;
previous_state = current_state ;
}
return count ;
}

Related Links

Bluetooth module won't function when working with leapmotion
switch on or off the motor based on the reply of the user
IS my Modulo usage incorrect? What can
Use analog output as digital in relay pins
Arduino Uno and ESP8266-01
Power supply for raspberry and arduino
Arduino UNO and MPU 6050
Understanding timer choices/options
Programming attiny45 chip and ir remote library
Arduino Uno: Running multiple servos
MPU 6050 SD Writing Frequency Arduino is not constant , how to have a constant writing frequency?
MPU 6050 giving values -1
P10 with Arduino, display negative/all pixels on
Arduino-uno project [closed]
Arduino digitalWrite not working in else
Shift register 74ch595 and Arduino

Categories

HOME
maven
gitlab
deployment
reflection
layout
electron
jsrender
installshield
ojdbc
azure-media-services
virtualization
vifm
volttron
numeral.js
qt-creator
uitypeeditor
seaborn
code-review
visual-composer
textfield
scichart
predix
kryo
microsoft-r
restful-authentication
angular2-aot
smb
facet
chromebook
brunch
buck
compatibility
jspm
preg-match
ecto
galsim
ioio
webtest
android-kernel
picasso
jmonkeyengine
host
xcode-extension
serverside-rendering
streamsets
ssjs
bootstrap-dialog
businessworks
jedis
dds
celery-task
togetherjs
yii2-extension
linode
nbconvert
jspdf-autotable
mediaelement
quartz-composer
log4c
sts-springsourcetoolsuite
thrust
xml-attribute
fadeout
rhino-servicebus
wapiti
srand
mutation-observers
spidermonkey
arcanist
myo
key-management
bigbluebutton
valuechangelistener
kgdb
viadeo
html5-notifications
cdc
dexterity
runtime.exec
xamlparseexception
specification-pattern
mhtml
chuck
cisco-jtapi
bluepill
onsubmit
pydot
xmlspy
cinema-4d
krl
propagation
mongomapper
datareader
yslow
blitz++
coda-slider
gamequery
photoshop-cs4
data-driven
rtml
lzh

Resources

Database Users
RDBMS discuss
Database Dev&Adm
javascript
java
csharp
php
android
javascript
java
csharp
php
python
android
jquery
ruby
ios
html
Mobile App
Mobile App
Mobile App