Skip to content

Instantly share code, notes, and snippets.

@bodokaiser
Created June 27, 2018 12:09
Show Gist options
  • Save bodokaiser/de5db29cff43c740d3136dff3e2a7e92 to your computer and use it in GitHub Desktop.
Save bodokaiser/de5db29cff43c740d3136dff3e2a7e92 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [],
"source": [
"import requests\n",
"import json\n",
"import numpy as np\n",
"\n",
"from scipy import ndimage\n",
"from PIL import Image\n",
"\n",
"from matplotlib import pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x11121de48>"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"image/png": {
"height": 251,
"width": 300
}
},
"output_type": "display_data"
}
],
"source": [
"img = np.array(Image.open('pi.png'))[:, :, 0]\n",
"\n",
"plt.imshow(img == 255, cmap='gray')"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.collections.PathCollection at 0x111618710>"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"image/png": {
"height": 251,
"width": 373
}
},
"output_type": "display_data"
}
],
"source": [
"i, j = np.argwhere(img == 0).transpose()\n",
"\n",
"i = i / 159\n",
"j = j / 189\n",
"\n",
"x = -6e6*i[::14]+100e6\n",
"y = 6e6*j[::14]+100e6\n",
"\n",
"plt.scatter(i, j)"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<Response [204]>"
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"requests.put('http://beaglebone.local:6200/devices/dds/9', headers={'Content-Type': 'application/json'}, json={\n",
" 'id': 9,\n",
" 'name': 'Bodo Vertical',\n",
" 'amplitude': {\n",
" 'mode': 'const',\n",
" 'const': {'value': 1}\n",
" },\n",
" 'frequency': {\n",
" 'mode': 'playback',\n",
" 'const': {'value': 100e6},\n",
" 'playback': {'trigger': False, 'duplex': False, 'interval': 1e-5, 'data': x.tolist()}\n",
" },\n",
" 'phase': {\n",
" 'mode': 'const',\n",
" 'const': {'value': 0}\n",
" }\n",
"})\n",
"requests.put('http://beaglebone.local:6200/devices/dds/8', headers={'Content-Type': 'application/json'}, json={\n",
" 'id': 8,\n",
" 'name': 'Bodo Horizontal',\n",
" 'amplitude': {\n",
" 'mode': 'const',\n",
" 'const': {'value': 1}\n",
" },\n",
" 'frequency': {\n",
" 'mode': 'playback',\n",
" 'const': {'value': 100e6},\n",
" 'playback': {'trigger': False, 'duplex': False, 'interval': 1e-5, 'data': y.tolist()}\n",
" },\n",
" 'phase': {\n",
" 'mode': 'const',\n",
" 'const': {'value': 0}\n",
" }\n",
"})"
]
},
{
"cell_type": "code",
"execution_count": 122,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.5"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment