VIM delete all lines not matching pattern

In Vi you can use the following command to search for a pattern and delete all those lines

:%g/pattern-to-search-for/d

To inverse the operation and delete all lines not matching the pattern, change g to v

:%v/pattern-to-search-for/d

LuminOx O2 Sensor on Arduino

The LuminOx Oxygen sensor seems to be a pretty decent O2 sensor and easy to get setup and running.

https://www.sstsensing.com/product/luminox-optical-oxygen-sensors-2/
PinDesignation
1Vs (+5V)
2GND (0V)
33.3V UART* Sensor Transmit
43.3V UART* Sensor Receive
 * 5V tolerant
Looks like it is 5V tolerant so you should not need a logic level shifter.

Wiring Up LuminOx O2 Sensor to Arduino

Fortunately wiring up the LuminOx O2 Sensor to an Arduino is super easy

In the code example below we will use pins 10 and 11 to communicate with the sensor. So you can wire it up as follows

sensor pin 1 -> 5V power
sensor pin 2 -> Ground
sensor pin 3 -> pin 10
sensor pin 4 -> pin 11

Arduino Code for LuminOx O2 Sensor

Should be able to just copy and past the code into the arduino editor and upload it.

#include <SoftwareSerial.h>

SoftwareSerial mySerial(10, 11); // RX (O2 Pin 3), TX (O2 Pin 4)

void setup() {
  Serial.begin(9600);
  mySerial.begin(9600);
}

void loop() {
 if (mySerial.available())  {
    Serial.write(mySerial.read());
    }
}

Open up the serial console to view the sensor output

LuminOx O2 Sensor Output

Helpful links
Datasheet: https://www.sstsensing.com/product/luminox-optical-oxygen-sensors-2/
Arduino forum: https://forum.arduino.cc/index.php?topic=601622.15

Sketch uses 444 bytes (1%) of program storage space. Maximum is 32256 bytes.

Sketch uses 444 bytes (1%) of program storage space. Maximum is 32256 bytes.

Arduino upload error

Looks like this can randomly happen. Things to try to resolve the problem

  1. Unplug USB cable for a little bit
  2. Restart Arduino IDE
  3. Reboot computer

More information here

https://arduino.stackexchange.com/questions/23620/problem-uploading-to-arduino-uno

Install Microsoft Precision Drivers on Alienware 13 R3

https://www.howtogeek.com/325347/how-to-enable-microsofts-precision-touchpad-drivers-on-your-laptop/

Download and extract the Lenovo driver
https://download.lenovo.com/pccbbs/mobiles/n1mgx14w.zip

Open Device manager, right click on the touchpad and select Update driver

Update Touchpad driver

Browse My computer for Driver Software

Let me pick from a list of available drivers on my computer

On the pop up select have disk

Navigate to the extracted Lenovo driver and select Autorun.inf

Open, select next, install, accept the warning

Restart computer

After you restart your computer you can go to the Windows settings and tweak the precision settings

Windows 10 precision touchpad settings

Other interesting touch pad stuff

https://www.multiswipe.com

Using Seeed Studio O2 Sensor Arduino Without Grove Breakout board

https://github.com/SeeedDocument/Seeed-WiKi/blob/master/docs/Grove-Gas_Sensor-O2.md

The Seeed Studio O2 sensor is a nice Oxygen sensor. It works up to 25% Oxygen concentration and is easy to use in an Arduino project.
http://wiki.seeedstudio.com/Grove-Gas_Sensor-O2/

Wiring Up the O2 Sensor to Arduino

If you look on the back of the sensor there are only 3 wires used. VCC, GND, and a SIG. The NC pin is “Not Connected”

Wire the
GND -> Arduino ground
VCC -> Arduino 3.3V (Looks like it may also accept 5V)
SIG -> A5 (Analog 5)

Code to read O2 Sensor

Copy and paste the following code into the Arduino IDE

// Grove - Gas Sensor(O2) test code
// Note:
// 1. It need about about 5-10 minutes to preheat the sensor
// 2. modify VRefer if needed

const float VRefer = 3.3;       // voltage of adc reference

const int pinAdc   = A5;

void setup() 
{
    // put your setup code here, to run once:
    Serial.begin(9600);
    Serial.println("Grove - Gas Sensor Test Code...");
}

void loop() 
{
    // put your main code here, to run repeatedly:
    float Vout =0;
    Serial.print("Vout =");

    Vout = readO2Vout();
    Serial.print(Vout);
    Serial.print(" V, Concentration of O2 is ");
    Serial.println(readConcentration());
    delay(500);
}

float readO2Vout()
{
    long sum = 0;
    for(int i=0; i<32; i++)
    {
        sum += analogRead(pinAdc);
    }
    
    sum >>= 5;
    
    float MeasuredVout = sum * (VRefer / 1023.0);
    return MeasuredVout;
}

float readConcentration()
{
    // Vout samples are with reference to 3.3V
    float MeasuredVout = readO2Vout();
    
    //float Concentration = FmultiMap(MeasuredVout, VoutArray,O2ConArray, 6);
    //when its output voltage is 2.0V,
    float Concentration = MeasuredVout * 0.21 / 2.0;
    float Concentration_Percentage=Concentration*100;
    return Concentration_Percentage;
}

Upload and Launch the Serial Monitor
Tools -> Serial Monitor
or
Ctrl + Shift + M