Combine a variety of coding in one Arduino code

SHS/doorbell/Buzzer.cpp

SHS/doorbell/Buzzer.cpp

#include
 
“Buzzer.h”

#include
 
< avr / wdt . h >

uint8_t buzzer_pin
;

#ifdef
 ME_PORT_DEFINED

/**

 * Alternate Constructor which can call your own function to map the Buzzer to arduino port,

 * Buzzer pins are used and initialized here.

 * param[in]

 *   None

 */

Buzzer
::
Buzzer
()

{

  buzzer_pin 
=
 
9
;

}

/**

 * Alternate Constructor which can call your own function to map the Buzzer to arduino port,

 * If the hardware serial was selected, we will used the hardware serial.

 * param[in]

 *   port – RJ25 port from PORT_1 to M2

 */

Buzzer
::
Buzzer
(
uint8_t port
)
:
MePort
(
port
)

{

  buzzer_pin 
=
 port
;

}

/**

 * Alternate Constructor which can call your own function to map the Buzzer to arduino port,

 * you can set any slot for the buzzer device.

 * param[in]

 *   port – RJ25 port from PORT_1 to M2

 * param[in]

 *   slot – SLOT1 or SLOT2

 */

Buzzer
::
Buzzer
(
uint8_t port
,
 uint8_t slot
)
:
MePort
(
port
)

{

  buzzer_pin 
=
 s2
;

  
if
(
slot 
==
 SLOT2
)

  
{

    buzzer_pin 
=
 s2
;

  
}

  
else

  
{

    buzzer_pin 
=
 s1
;

  
}

}

#else
 
// ME_PORT_DEFINED

/**

 * Alternate Constructor which can call your own function to map the Buzzer to arduino port,

 * param[in]

 *   switchPin – arduino port for buzzer detect pin.

 */

Buzzer
::
Buzzer
(
int
 pin
)

{

  buzzer_pin 
=
 pin
;

}

#endif
 
// ME_PORT_DEFINED

/**

 * par Function

 *    setpin

 * par Description

 *    Reset the buzzer available pin by its arduino port.

 * param[in]

 *    pin – arduino port for buzzer detect pin.

 * par Output

 *    None

 * par Return

 *    None

 * par Others

 *    None

 */

void
 
Buzzer
::
setpin
(
int
 pin
)

{

  buzzer_pin 
=
 pin
;

}

/**

 * par Function

 *    tone

 * par Description

 *    Playing the tones.

 * param[in]

 *    pin – Which pin on board that buzzer is connecting to.

 * param[in]

 *    frequency – The speed of buzzer’s tone play.

 * param[in]

 *    duration – Time of a tone play.

 * par Output

 *    None

 * Return

 *    None.

 * par Others

 *    Frequency (in hertz) and duration (in milliseconds).

 */

void
 
Buzzer
::
tone
(
int
 pin
,
 uint16_t frequency
,
 uint32_t duration
)

{

  buzzer_pin 
=
 pin
;

  
int
 period 
=
 
1000000L
 
/
 frequency
;

  
int
 pulse 
=
 period 
/
 
2
;

  pinMode
(
buzzer_pin
,
 OUTPUT
);

  
for
 
(
long
 i 
=
 
0
;
 i 
<  duration  *   1000L ;  i  +=  period )    {     digitalWrite ( buzzer_pin ,  HIGH );     delayMicroseconds ( pulse );     digitalWrite ( buzzer_pin ,  LOW );     delayMicroseconds ( pulse );     wdt_reset ();    } } /**  * par Function  *    tone  * par Description  *    Playing the tones.  * param[in]  *    frequency - The speed of buzzer's tone play.  * param[in]  *    duration - Time of a tone play.  * par Output  *    None  * Return  *    None.  * par Others  *    Frequency (in hertz) and duration (in milliseconds).  */ void   Buzzer :: tone ( uint16_t frequency ,  uint32_t duration ) {      int  period  =   1000000L   /  frequency ;      int  pulse  =  period  /   2 ;     pinMode ( buzzer_pin ,  OUTPUT );      for   ( long  i  =   0 ;  i  <  duration  *   1000L ;  i  +=  period )      {         digitalWrite ( buzzer_pin ,  HIGH );         delayMicroseconds ( pulse );         digitalWrite ( buzzer_pin ,  LOW );         delayMicroseconds ( pulse );         wdt_reset ();      } } void   Buzzer :: _tone  ( float  noteFrequency ,   long  noteDuration ,   int  silentDuration ) {      // tone(10,261,500);      // delay(500);        if ( silentDuration == 0 ){ silentDuration = 1 ;}       tone ( buzzer_pin ,  noteFrequency ,  noteDuration );       delay ( noteDuration );         //milliseconds to microseconds        //noTone(PIN_Buzzer);       delay ( silentDuration ); } void   Buzzer :: bendTones ( float  initFrequency ,   float  finalFrequency ,   float  prop ,   long  noteDuration ,   int  silentDuration ){    //Examples:    //  bendTones (880, 2093, 1.02, 18, 1);    //  bendTones (note_A5, note_C7, 1.02, 18, 0);    if ( silentDuration == 0 ){ silentDuration = 1 ;}    if ( initFrequency  <  finalFrequency )    {        for   ( int  i = initFrequency ;  i < finalFrequency ;  i = i * prop )   {           _tone ( i ,  noteDuration ,  silentDuration );        }    }   else {        for   ( int  i = initFrequency ;  i >
finalFrequency
;
 i
=
i
/
prop
)
 
{

          _tone
(
i
,
 noteDuration
,
 silentDuration
);

      
}

  
}

}

/**

 * par Function

 *    noTone

 * par Description

 *    Do not playing the tones.

 * param[in]

 *    pin – Which pin on board that buzzer is connecting to.

 * par Output

 *    None

 * Return

 *    None.

 * par Others

 *    None

 */

void
 
Buzzer
::
noTone
(
int
 pin
)

{

  buzzer_pin 
=
 pin
;

  pinMode
(
buzzer_pin
,
 OUTPUT
);

  digitalWrite
(
buzzer_pin
,
 LOW
);

}

/**

 * par Function

 *    noTone

 * par Description

 *    Do not playing the tones.

 * param[in]

 *    None

 * par Output

 *    None

 * Return

 *    None.

 * par Others

 *    None

 */

void
 
Buzzer
::
noTone
()

{

  pinMode
(
buzzer_pin
,
 OUTPUT
);

  digitalWrite
(
buzzer_pin
,
 LOW
);

}

SHS/doorbell/Buzzer.h
/**
* par Copyright (C), 2012-2016, MakeBlock
* class Buzzer
* brief Driver for Me Buzzer module.
* @file Buzzer.h
* @author MakeBlock
* @version V1.0.0
* @date 2015/11/09
* @brief Header for Buzzer.cpp module
*
* par Copyright
* This software is Copyright (C), 2012-2016, MakeBlock. Use is subject to license n
* conditions. The main licensing options available are GPL V2 or Commercial: n
*
* par Open Source Licensing GPL V2
* This is the appropriate option if you want to share the source code of your n
* application with everyone you distribute it to, and you also want to give them n
* the right to share who uses it. If you wish to use this software under Open n
* Source Licensing, you must contribute all your source code to the open source n
* community in accordance with the GPL Version 2 when your application is n
* distributed. See http://www.gnu.org/copyleft/gpl.html
*
* par Description
* This file is a drive for Me Buzzer device, The Me Buzzer inherited the
* MeSerial class from SoftwareSerial.
*
* par Method List:
*
* 1. void Buzzer::setpin(int pin);
* 2. void Buzzer::tone(int pin, uint16_t frequency, uint32_t duration);
* 3. void Buzzer::tone(uint16_t frequency, uint32_t duration)
* 4. void Buzzer::noTone(int pin);
* 5. void Buzzer::noTone();
*
* par History:
*

 * ``         `

*
* @example BuzzerTest.ino
*/
#ifndef Buzzer_H
#define Buzzer_H

#include
#include
#include

#ifdef ME_PORT_DEFINED
#include “MePort.h”
#endif // ME_PORT_DEFINED

/**
* Class: Buzzer
* par Description
* Declaration of Class Buzzer.
*/

#ifdef ME_PORT_DEFINED
class Buzzer : public MePort
#else
class Buzzer
#endif

{
public:
#ifdef ME_PORT_DEFINED
/**
* Alternate Constructor which can call your own function to map the buzzer to arduino port,
* no pins are used or initialized here.
* param[in]
* None
*/
Buzzer();

/**
* Alternate Constructor which can call your own function to map the Buzzer to arduino port,
* If the hardware serial was selected, we will used the hardware serial.
* param[in]
* port – RJ25 port from PORT_1 to M2
*/
Buzzer(uint8_t port);

/**
* Alternate Constructor which can call your own function to map the Buzzer to arduino port,
* you can set any slot for the buzzer device.
* param[in]
* port – RJ25 port from PORT_1 to M2
* param[in]
* slot – SLOT1 or SLOT2
*/
Buzzer(uint8_t port, uint8_t slot);
#else // ME_PORT_DEFINED
/**
* Alternate Constructor which can call your own function to map the Buzzer to arduino port,
* param[in]
* switchPin – arduino port for buzzer detect pin.
*/
Buzzer(int pin);
#endif // ME_PORT_DEFINED
/**
* par Function
* setpin
* par Description
* Reset the buzzer available pin by its arduino port.
* param[in]
* pin – arduino port for buzzer detect pin.
* par Output
* None
* par Return
* None
* par Others
* None
*/
void setpin(int pin);

/**
* par Function
* tone
* par Description
* Playing the tones.
* param[in]
* pin – Which pin on board that buzzer is connecting to.
* param[in]
* frequency – The speed of buzzer’s tone play.
* param[in]
* duration – Time of a tone play.
* par Output
* None
* Return
* None.
* par Others
* Frequency (in hertz) and duration (in milliseconds).
*/
void tone(int pin, uint16_t frequency, uint32_t duration);

/**
* par Function
* tone
* par Description
* Playing the tones.
* param[in]
* frequency – The speed of buzzer’s tone play.
* param[in]
* duration – Time of a tone play.
* par Output
* None
* Return
* None.
* par Others
* Frequency (in hertz) and duration (in milliseconds).
*/
void tone(uint16_t frequency, uint32_t duration = 0);

/**
* par Function
* noTone
* par Description
* Do not playing the tones.
* param[in]
* pin – Which pin on board that buzzer is connecting to.
* par Output
* None
* Return
* None.
* par Others
* None
*/

void _tone(float noteFrequency, long noteDuration, int silentDuration);
void bendTones(float initFrequency, float finalFrequency, float prop, long noteDuration, int silentDuration);

void noTone(int pin);

/**
* par Function
* noTone
* par Description
* Do not playing the tones.
* param[in]
* None
* par Output
* None
* Return
* None.
* par Others
* None
*/
void noTone();
};
#endif

SHS/doorbell/doorbell.ino

#include “Buzzer.h”
#include “Sounds.h”
#include “PH20Port.h”

PH20Port buzzerplay(P9);

#include “Buzzer.h”

int touch_PIN2 = 2;
Buzzer mBuzzer = Buzzer(buzzerplay.pin1());
Buzzer buzzer(buzzerplay.pin1());

void setup() {

pinMode(touch_PIN2,INPUT);
}

void loop() {

if (digitalRead(touch_PIN2)==HIGH) {
mBuzzer.bendTones(1500, 2500, 1.05, 20, 8);
mBuzzer.bendTones(2499, 1500, 1.05, 25, 8);
} else {
buzzer.noTone();
}

}

SHS/doorbell/PH20Port.cpp
#include “PH20Port.h”

PH20Port_Sig PH20_Port[RJ25_MAX] =
{
{ A3, NC, NC, NC, NC, NC }, //1
{ A2, NC, NC, NC, NC, NC }, //2
{ A1, NC, NC, NC, NC, NC }, //3
{ A0, NC, NC, NC, NC, NC }, //4
{ 7, A0, NC, NC, NC, NC }, //5
{ 8, A1, NC, NC, NC, NC }, //6
{ A5, A4, NC, NC, NC, NC }, //7
{ 6, 5, NC, NC, NC, NC }, //8
{ 3, NC, NC, NC, NC, NC }, //9
{ 4, NC, NC, NC, NC, NC }, //10
{ 5, NC, NC, NC, NC, NC }, //11
{ 6, NC, NC, NC, NC, NC }, //12
{ 4, 7, 8, A3, NC, NC }, //13
{ 2, 7, A5, A4, NC, NC }, //14
{ NC, NC, 3, 5, 6, NC }, //15
{ NC, NC, A4, A5, 2, NC }, //16
};

/***********************Port*********************/
/**
* Alternate Constructor which can call your own function to map the PH20Port to arduino port,
* no pins are used or initialized here
*/
PH20Port::PH20Port(void)
{
s1 = PH20_Port[0].s1;
s2 = PH20_Port[0].s2;
s3 = PH20_Port[0].s3;
s4 = PH20_Port[0].s4;
s5 = PH20_Port[0].s5;
s6 = PH20_Port[0].s6;
_port = 0;
}

/**
* Alternate Constructor which can call your own function to map the PH20Port to arduino port,
* no pins are used or initialized here, but PWM frequency set to 976 Hz
* param[in]
* port – RJ25 port from PORT_1 to M2
*/
PH20Port::PH20Port(uint8_t port)
{
if (port < 1) return; s1 = PH20_Port[port-1].s1; s2 = PH20_Port[port-1].s2; s3 = PH20_Port[port-1].s3; s4 = PH20_Port[port-1].s4; s5 = PH20_Port[port-1].s5; s6 = PH20_Port[port-1].s6; _port = port; } /** * Alternate Constructor which can call your own function to map the PH20Port to arduino port, * no pins are used or initialized here, but PWM frequency set to 976 Hz * param[in] * port - RJ25 port from PORT_1 to M2 * param[in] * slot - SLOT1 or SLOT2 */ PH20Port::PH20Port(uint8_t port, uint8_t slot) { if (port < 1) return; s1 = PH20_Port[port-1].s1; s2 = PH20_Port[port-1].s2; _port = port; _slot = slot; } /** * par Function * getPort * par Description * Get current valid port of current RJ25 object * par Output * None * return * Port bumber from PORT_1 to M2 * par Others * None */ uint8_t PH20Port::getPort() { return(_port); } /** * par Function * getSlot * par Description * Get current valid slot of current RJ25 object's port * par Output * None * return * Slot bumber SLOT1 or SLOT2 * par Others * None */ uint8_t PH20Port::getSlot(void) { return(_slot); } /** * par Function * dRead1 * par Description * Read the digital input value on slot1 of current RJ25 object's port * param[in] * mode - digital input mode INPUT or INPUT_PULLUP * par Output * None * return * Digital input value * par Others * None */ bool PH20Port::dRead1(uint8_t mode) { bool val; pinMode(s1, mode); val = digitalRead(s1); return(val); } /** * par Function * dRead2 * par Description * Read the digital input value on slot2 of current RJ25 object's port * param[in] * mode - digital input mode INPUT or INPUT_PULLUP * par Output * None * return * Digital input value * par Others * None */ bool PH20Port::dRead2(uint8_t mode) { bool val; pinMode(s2, mode); val = digitalRead(s2); return(val); } bool PH20Port::dRead3(uint8_t mode) { bool val; pinMode(s3, mode); val = digitalRead(s3); return(val); } bool PH20Port::dRead4(uint8_t mode) { bool val; pinMode(s4, mode); val = digitalRead(s4); return(val); } bool PH20Port::dRead5(uint8_t mode) { bool val; pinMode(s5, mode); val = digitalRead(s5); return(val); } /** * par Function * dpRead1 * par Description * Read the digital input value on slot1 of current RJ25 object's port, the input * mode set as INPUT_PULLUP. * par Output * None * return * Digital input value * par Others * None */ bool PH20Port::dpRead1(void) { bool val; pinMode(s1, INPUT_PULLUP); val = digitalRead(s1); return(val); } /** * par Function * dpRead2 * par Description * Read the digital input value on slot2 of current RJ25 object's port, the input * mode set as INPUT_PULLUP. * par Output * None * return * Digital input value * par Others * None */ bool PH20Port::dpRead2(void) { bool val; pinMode(s2, INPUT_PULLUP); val = digitalRead(s2); return(val); } /** * par Function * dWrite1 * par Description * Set the digital output value on slot1 of current RJ25 object's port * param[in] * value - digital output value HIGH or LOW * par Output * None * return * None * par Others * None */ void PH20Port::dWrite1(bool value) { pinMode(s1, OUTPUT); digitalWrite(s1, value); } /** * par Function * dWrite2 * par Description * Set the digital output value on slot2 of current RJ25 object's port * param[in] * value - digital output value HIGH or LOW * par Output * None * return * None * par Others * None */ void PH20Port::dWrite2(bool value) { pinMode(s2, OUTPUT); digitalWrite(s2, value); } void PH20Port::dWrite3(bool value) { pinMode(s3, OUTPUT); digitalWrite(s3, value); } void PH20Port::dWrite4(bool value) { pinMode(s4, OUTPUT); digitalWrite(s4, value); } void PH20Port::dWrite5(bool value) { pinMode(s5, OUTPUT); digitalWrite(s5, value); } /** * par Function * aRead1 * par Description * Read the analog value on slot1 of current RJ25 object's port * par Output * None * return * Analog value from 0-1023 * par Others * None */ int16_t PH20Port::aRead1(void) { int16_t val; pinMode(s1, INPUT); val = analogRead(s1); return(val); } /** * par Function * aRead2 * par Description * Read the analog value on slot2 of current RJ25 object's port * par Output * None * return * Analog value from 0-1023 * par Others * None */ int16_t PH20Port::aRead2(void) { int16_t val; pinMode(s2, INPUT); val = analogRead(s2); return(val); } int16_t PH20Port::aRead3(void) { int16_t val; pinMode(s3, INPUT); val = analogRead(s3); return(val); } int16_t PH20Port::aRead4(void) { int16_t val; pinMode(s4, INPUT); val = analogRead(s4); return(val); } int16_t PH20Port::aRead5(void) { int16_t val; pinMode(s5, INPUT); val = analogRead(s5); return(val); } /** * par Function * aWrite1 * par Description * Set the PWM output value on slot1 of current RJ25 object's port * param[in] * value - Analog value between 0 to 255 * par Output * None * return * None * par Others * None */ void PH20Port::aWrite1(int16_t value) { analogWrite(s1, value); } /** * par Function * aWrite2 * par Description * Set the PWM output value on slot2 of current RJ25 object's port * param[in] * value - Analog value between 0 to 255 * par Output * None * return * None * par Others * None */ void PH20Port::aWrite2(int16_t value) { analogWrite(s2, value); } void PH20Port::aWrite3(int16_t value) { analogWrite(s3, value); } void PH20Port::aWrite4(int16_t value) { analogWrite(s4, value); } void PH20Port::aWrite5(int16_t value) { analogWrite(s5, value); } /** * par Function * reset * par Description * Reset the RJ25 available PIN by its port * param[in] * port - RJ25 port from PORT_1 to M2 * par Output * None * return * None * par Others * None */ void PH20Port::reset(uint8_t port) { if ( port < 1) return; s1 = PH20_Port[port-1].s1; s2 = PH20_Port[port-1].s2; _port = port; } /** * par Function * reset * par Description * Reset the RJ25 available PIN by its port and slot * param[in] * port - RJ25 port from PORT_1 to M2 * param[in] * slot - SLOT1 or SLOT2 * par Output * None * return * None * par Others * None */ void PH20Port::reset(uint8_t port, uint8_t slot) { if ( port < 1) return; s1 = PH20_Port[port-1].s1; s2 = PH20_Port[port-1].s2; _port = port; _slot = slot; } /** * par Function * pin1 * par Description * Return the arduino pin number of current RJ25 object's slot1 * par Output * None * return * The PIN number of arduino * par Others * None */ uint8_t PH20Port::pin1(void) { return(s1); } /** * par Function * pin2 * par Description * Return the arduino pin number of current RJ25 object's slot2 * par Output * None * return * The PIN number of arduino * par Others * None */ uint8_t PH20Port::pin2(void) { return(s2); } uint8_t PH20Port::pin3(void) { return(s3); } uint8_t PH20Port::pin4(void) { return(s4); } uint8_t PH20Port::pin5(void) { return(s5); } /** * par Function * pin * par Description * Return the arduino pin number of current RJ25 object's port, if the RJ25 module * have one available PIN. * par Output * None * return * The PIN number of arduino * par Others * None */ uint8_t PH20Port::pin(void) { return(_slot == SLOT_1 ? s1 : s2); } /** * par Function * pin * par Description * Return the arduino pin number of current RJ25 object's port * param[in] * port - RJ25 port from PORT_1 to M2 * param[in] * slot - SLOT1 or SLOT2 * par Output * None * return * The PIN number of arduino * par Others * None */ uint8_t PH20Port::pin(uint8_t port, uint8_t slot) { if ( port < 1) return; return(slot == SLOT_1 ? PH20_Port[port-1].s1 : PH20_Port[port-1].s2); } SHS/doorbell/PH20Port.h #ifndef _PH20Port_H_ #define _PH20Port_H_ #include
#include
#include
#include
#include
#include

#define RJ25_MAX 16

#define P1 1
#define P2 2
#define P3 3
#define P4 4

#define P5 5
#define P6 6
#define P7 7
#define P8 8

#define P9 9
#define P10 10
#define P11 11
#define P12 12

#define P13 13
#define P14 14
#define P15 15
#define P16 16

/**
* A structure to represent PH20Port Signal.
*/
typedef struct
{
uint8_t s1;
uint8_t s2;
uint8_t s3;
uint8_t s4;
uint8_t s5;
uint8_t s6;
} PH20Port_Sig;

extern PH20Port_Sig PH20_Port[RJ25_MAX]; // PH20Port[0] is nonsense

#define NC (0) //use UART RX for NULL port

#define SLOT1 (1)
#define SLOT2 (2)
#define SLOT3 (3)
#define SLOT4 (4)
#define SLOT5 (5)
#define SLOT6 (6)

#define SLOT_1 SLOT1
#define SLOT_2 SLOT2
#define SLOT_3 SLOT3
#define SLOT_4 SLOT4
#define SLOT_5 SLOT3
#define SLOT_6 SLOT4

#ifndef FALSE
#define FALSE (0)
#endif

#ifndef TRUE
#define TRUE (1)
#endif

/**
* Class: PH20Port
*
* par Description
* Declaration of Class PH20Port
*/
class PH20Port
{
public:

/**
* Alternate Constructor which can call your own function to map the PH20Port to arduino port,
* no pins are used or initialized here
*/
PH20Port(void);

/**
* Alternate Constructor which can call your own function to map the PH20Port to arduino port,
* no pins are used or initialized here, but PWM frequency set to 976 Hz
* param[in]
* port – RJ25 port from PORT_1 to M2
*/
PH20Port(uint8_t port);

/**
* Alternate Constructor which can call your own function to map the PH20Port to arduino port,
* no pins are used or initialized here, but PWM frequency set to 976 Hz
* param[in]
* port – RJ25 port from PORT_1 to M2
* param[in]
* slot – SLOT1 or SLOT2
*/
PH20Port(uint8_t port, uint8_t slot);

/**
* par Function
* getPort
* par Description
* Get current valid port of current RJ25 object
* par Output
* None
* return
* Port bumber from PORT_1 to M2
* par Others
* None
*/
uint8_t getPort(void);

/**
* par Function
* getSlot
* par Description
* Get current valid slot of current RJ25 object’s port
* par Output
* None
* return
* Slot bumber SLOT1 or SLOT2
* par Others
* None
*/
uint8_t getSlot(void);

/**
* par Function
* dRead1
* par Description
* Read the digital input value on slot1 of current RJ25 object’s port
* param[in]
* mode – digital input mode INPUT or INPUT_PULLUP
* par Output
* None
* return
* Digital input value
* par Others
* None
*/
bool dRead1(uint8_t mode = INPUT);

/**
* par Function
* dRead2
* par Description
* Read the digital input value on slot2 of current RJ25 object’s port
* param[in]
* mode – digital input mode INPUT or INPUT_PULLUP
* par Output
* None
* return
* Digital input value
* par Others
* None
*/
bool dRead2(uint8_t mode = INPUT);
bool dRead3(uint8_t mode = INPUT);
bool dRead4(uint8_t mode = INPUT);
bool dRead5(uint8_t mode = INPUT);

/**
* par Function
* dpRead1
* par Description
* Read the digital input value on slot1 of current RJ25 object’s port, the input
* mode set as INPUT_PULLUP.
* par Output
* None
* return
* Digital input value
* par Others
* None
*/
bool dpRead1(void);

/**
* par Function
* dpRead2
* par Description
* Read the digital input value on slot2 of current RJ25 object’s port, the input
* mode set as INPUT_PULLUP.
* par Output
* None
* return
* Digital input value
* par Others
* None
*/
bool dpRead2(void);

/**
* par Function
* dWrite1
* par Description
* Set the digital output value on slot1 of current RJ25 object’s port
* param[in]
* value – digital output value HIGH or LOW
* par Output
* None
* return
* None
* par Others
* …

Place your order
(550 words)

Approximate price: $22

Calculate the price of your order

550 words
We'll send you the first draft for approval by September 11, 2018 at 10:52 AM
Total price:
$26
The price is based on these factors:
Academic level
Number of pages
Urgency
Basic features
  • Free title page and bibliography
  • Unlimited revisions
  • Plagiarism-free guarantee
  • Money-back guarantee
  • 24/7 support
On-demand options
  • Writer’s samples
  • Part-by-part delivery
  • Overnight delivery
  • Copies of used sources
  • Expert Proofreading
Paper format
  • 275 words per page
  • 12 pt Arial/Times New Roman
  • Double line spacing
  • Any citation style (APA, MLA, Chicago/Turabian, Harvard)

Our guarantees

Delivering a high-quality product at a reasonable price is not enough anymore.
That’s why we have developed 5 beneficial guarantees that will make your experience with our service enjoyable, easy, and safe.

Money-back guarantee

You have to be 100% sure of the quality of your product to give a money-back guarantee. This describes us perfectly. Make sure that this guarantee is totally transparent.

Read more

Zero-plagiarism guarantee

Each paper is composed from scratch, according to your instructions. It is then checked by our plagiarism-detection software. There is no gap where plagiarism could squeeze in.

Read more

Free-revision policy

Thanks to our free revisions, there is no way for you to be unsatisfied. We will work on your paper until you are completely happy with the result.

Read more

Privacy policy

Your email is safe, as we store it according to international data protection rules. Your bank details are secure, as we use only reliable payment systems.

Read more

Fair-cooperation guarantee

By sending us your money, you buy the service we provide. Check out our terms and conditions if you prefer business talks to be laid out in official language.

Read more

Order your essay today and save 30% with the discount code HAPPY